通知

更新时间: 2023/08/15 02:23:29

通知包含在线通知、离线通知、同步通知、其他通知,开发者可以通过SignallingServiceObserver 来注册通知观察者从而获取通知。

  • 说明: 以下所有方法都位于NIMSignalManagerDelegate

在线通知

  • 在线通知类型
  1. NIMSignalingEventTypeClose:关闭频道
  2. NIMSignalingEventTypeJoin:加入频道
  3. NIMSignalingEventTypeInvite:邀请加入频道
  4. NIMSignalingEventTypeCancelInvite:取消邀请
  5. NIMSignalingEventTypeReject:拒绝加入频道
  6. NIMSignalingEventTypeAccept:接受邀请
  7. NIMSignalingEventTypeLeave:离开频道
  8. NIMSignalingEventTypeContrl:自定义事件
  • 通知事件监听注册
objc/**
 *  添加通知对象
 *
 *  @param delegate 通知对象
 */
- (void)addDelegate:(id<NIMSignalManagerDelegate>)delegate;

/**
 *  移除通知对象
 *
 *  @param delegate 通知对象
 */
- (void)removeDelegate:(id<NIMSignalManagerDelegate>)delegate;
  • API原型
objc
/**
 在线通知

 @param eventType 信令操作事件类型
 @param notifyResponse 信令通知回调数据
 @discussion 用于通知信令相关的在线通知  NIMSignalingEventType 1-8有效
 */
- (void)nimSignalingOnlineNotifyEventType:(NIMSignalingEventType)eventType
                                 response:(NIMSignalingNotifyInfo *)notifyResponse;

  • 示例
objc- (void)nimSignalingOnlineNotifyEventType:(NIMSignalingEventType)eventType
                                 response:(NIMSignalingNotifyInfo *)notifyResponse
{
    switch (eventType) {
        case NIMSignalingEventTypeClose:{
            NIMSignalingCloseNotifyInfo *info = (NIMSignalingCloseNotifyInfo *)notifyResponse;
            NSLog(@"关闭房间");
        }
            break;
        case NIMSignalingEventTypeJoin:
        {
            NIMSignalingJoinNotifyInfo *info = (NIMSignalingJoinNotifyInfo *)notifyResponse;
            NSLog(@"加入房间");
        }
            break;
        case NIMSignalingEventTypeInvite:
        {
            NIMSignalingInviteNotifyInfo *info = (NIMSignalingInviteNotifyInfo *)notifyResponse;
            NSLog(@"邀请加入房间");
        }
            break;
        case NIMSignalingEventTypeCancelInvite:
        {
            NIMSignalingCancelInviteNotifyInfo *info = (NIMSignalingCancelInviteNotifyInfo *)notifyResponse;
            NSLog(@"取消邀请");
        }
            break;
        case NIMSignalingEventTypeReject:
        {
            NIMSignalingRejectNotifyInfo *info = (NIMSignalingRejectNotifyInfo *)notifyResponse;
            NSLog(@"拒绝加入房间");
        }
            break;
        case NIMSignalingEventTypeAccept:
        {
            NIMSignalingAcceptNotifyInfo *info = (NIMSignalingAcceptNotifyInfo *)notifyResponse;
            NSLog(@"接受邀请");
        }
            break;
        case NIMSignalingEventTypeLeave:
        {
            NIMSignalingLeaveNotifyInfo *info = (NIMSignalingLeaveNotifyInfo *)notifyResponse;
            NSLog(@"离开房间");
        }
            break;
        case NIMSignalingEventTypeContrl:
        {
            NIMSignalingControlNotifyInfo *info = (NIMSignalingControlNotifyInfo *)notifyResponse;
            NSLog(@"自定义事件");
        }
            break;
        default:
            break;
    }
}

  • 说明:
  1. 回调的时间通知需要根据相应的类型进行强转获取真正的内容
  2. 需要调用 addDelegate: 添加回调监听

离线通知

当用户登录时,会收到离线期间的所有已经的离线通知(通知默认不离线,需要发送方做相应的配置)。

  • 离线通知类型
  1. NIMSignalingEventTypeClose:频道关闭通知事件
  2. NIMSignalingEventTypeJoin:有用户加入频道通知事件
  3. NIMSignalingEventTypeInvite:被邀请通知事件
  4. NIMSignalingEventTypeCancelInvite:被取消邀请通知事件
  5. NIMSignalingEventTypeReject:对方应答拒绝邀请通知事件
  6. NIMSignalingEventTypeAccept:对方接受邀请通知事件
  7. NIMSignalingEventTypeContrl:用户离开通知事件
  • API 原型
objc/**
 离线通知

 @param notifyResponse 信令通知回调数据
 @discussion 用于通知信令相关的离线通知信息。需要用户在调用相关接口时,打开存离线的开关。如果用户已经接收消息,该通知会在服务器标记已读,之后不会再收到该消息  NIMSignalingEventType 1-7有效
 */
- (void)nimSignalingOfflineNotify:(NSArray <NIMSignalingNotifyInfo *> *)notifyResponse;

注意:登录后第一次注册此回调时,如果sdk已经获取到了相应的离线通知列表,会立即回调一次(仅此一次)。

  • 示例

参考在线通知示例

同步通知

  • 同步通知类型
  1. 多端同步(同一账号其他端响应了相应的邀请)
  2. 登录时同步未退出的频道信息
  • API 原型
objc/**
 在线多端同步通知

 @param eventType 信令操作事件类型:这里只有接受和拒绝
 @param notifyResponse 信令通知回调数据
 @discussion 用于通知信令相关的多端同步通知。比如自己在手机端接受邀请,PC端会同步收到这个通知  NIMSignalingEventType 5-6有效
 */
- (void)nimSignalingMultiClientSyncNotifyEventType:(NIMSignalingEventType)eventType
                                          response:(NIMSignalingNotifyInfo *)notifyResponse;
                                          
                                          
/**
 频道列表同步通知
 
 @param notifyResponse 信令通知回调数据
 @discussion 在login或者relogin后,会通知该设备账号还未退出的频道列表,用于同步;如果没有在任何频道中,也会返回该同步通知,list为空
 */
- (void)nimSignalingChannelsSyncNotify:(NSArray <NIMSignalingChannelDetailedInfo *> *)notifyResponse;

**注意:登录后第一次注册回调时,如果sdk已经获取到了相应的频道列表,会立即回调一次(仅此一次) **

其他通知

  • 类型
  1. 成员更新(主要用来处理些异常情况)
  • API 原型
objc/**
 房间成员同步通知

 @param notifyResponse 信令通知回调数据
 @discussion 用于同步频道内的成员列表变更,当前该接口为定时接口,2分钟同步一次,成员有变化时才上报。
 由于一些特殊情况,导致成员在离开或掉线前没有主动调用离开频道接口,使得该成员的离开没有对应的离开通知事件,由该回调接口【频道成员变更同步通知】告知用户
 */
- (void)nimSignalingMembersSyncNotify:(NIMSignalingChannelDetailedInfo *)notifyResponse;

注意:如果是有成员离开或加入频道,正常情况下会优先通过的在线通知回调来通知用户。 此回调的时机如下: 如果有成员信息的变更(而不是成员数量增减)或异常情况(有成员数量变更但是sdk没有回调在线通知)

此文档是否对你有帮助?
有帮助
去反馈
  • 在线通知
  • 离线通知
  • 同步通知
  • 其他通知