通知
更新时间: 2024/08/05 10:43:39
通知包含在线通知、离线通知、同步通知、其他通知,开发者可以通过SignallingServiceObserver 来注册通知观察者从而获取通知。
- 说明: 以下所有方法都位于
NIMSignalManagerDelegate
在线通知
- 在线通知类型
NIMSignalingEventTypeClose
:关闭频道NIMSignalingEventTypeJoin
:加入频道NIMSignalingEventTypeInvite
:邀请加入频道NIMSignalingEventTypeCancelInvite
:取消邀请NIMSignalingEventTypeReject
:拒绝加入频道NIMSignalingEventTypeAccept
:接受邀请NIMSignalingEventTypeLeave
:离开频道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;
}
}
- 说明:
- 回调的时间通知需要根据相应的类型进行强转获取真正的内容
- 需要调用 addDelegate: 添加回调监听
离线通知
当用户登录时,会收到离线期间的所有已经的离线通知(通知默认不离线,需要发送方做相应的配置)。
- 离线通知类型
NIMSignalingEventTypeClose
:频道关闭通知事件NIMSignalingEventTypeJoin
:有用户加入频道通知事件NIMSignalingEventTypeInvite
:被邀请通知事件NIMSignalingEventTypeCancelInvite
:被取消邀请通知事件NIMSignalingEventTypeReject
:对方应答拒绝邀请通知事件NIMSignalingEventTypeAccept
:对方接受邀请通知事件NIMSignalingEventTypeContrl
:用户离开通知事件
- API 原型
objc/**
离线通知
@param notifyResponse 信令通知回调数据
@discussion 用于通知信令相关的离线通知信息。需要用户在调用相关接口时,打开存离线的开关。如果用户已经接收消息,该通知会在服务器标记已读,之后不会再收到该消息 NIMSignalingEventType 1-7有效
*/
- (void)nimSignalingOfflineNotify:(NSArray <NIMSignalingNotifyInfo *> *)notifyResponse;
注意:登录后第一次注册此回调时,如果sdk已经获取到了相应的离线通知列表,会立即回调一次(仅此一次)。
- 示例
参考在线通知示例
同步通知
- 同步通知类型
- 多端同步(同一账号其他端响应了相应的邀请)
- 登录时同步未退出的频道信息
- 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已经获取到了相应的频道列表,会立即回调一次(仅此一次)
其他通知
- 类型
- 成员更新(主要用来处理些异常情况)
- API 原型
objc/**
房间成员同步通知
@param notifyResponse 信令通知回调数据
@discussion 用于同步频道内的成员列表变更,当前该接口为定时接口,2分钟同步一次,成员有变化时才上报。
由于一些特殊情况,导致成员在离开或掉线前没有主动调用离开频道接口,使得该成员的离开没有对应的离开通知事件,由该回调接口【频道成员变更同步通知】告知用户
*/
- (void)nimSignalingMembersSyncNotify:(NIMSignalingChannelDetailedInfo *)notifyResponse;
注意:如果是有成员离开或加入频道,正常情况下会优先通过的在线通知回调来通知用户。 此回调的时机如下: 如果有成员信息的变更(而不是成员数量增减)或异常情况(有成员数量变更但是sdk没有回调在线通知)
此文档是否对你有帮助?