通知

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

在线通知

/**
 *  添加通知对象
 *
 *  @param delegate 通知对象
 */
- (void)addDelegate:(id<NIMSignalManagerDelegate>)delegate;

/**
 *  移除通知对象
 *
 *  @param delegate 通知对象
 */
- (void)removeDelegate:(id<NIMSignalManagerDelegate>)delegate;

/**
 在线通知

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

离线通知

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

/**
 离线通知

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

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

参考在线通知示例

同步通知

/**
 在线多端同步通知

 @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已经获取到了相应的频道列表,会立即回调一次(仅此一次)

其他通知

/**
 房间成员同步通知

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

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