设置会话免打扰
- 本文仅描述了 SDK 版本 < 5.2.2 时,使用
RCIMClient
下接口设置免打扰的方法。- 如果 SDK 版本 ≧ 5.2.2,推荐使用
RCChannelClient
下支持设置免打扰级别的全局免打扰接口。请移步至 IMLib 文档按会话设置免打扰。
即时通讯服务支持会话免打扰设置。IMKit SDK 可根据会话类型、会话 ID 设置消息提醒状态为「免打扰」。设置后如果客户端在后台运行时,会话中有新的消息,将不会进行通知提醒,可以收到消息内容。如果客户端为离线状态,将不会收到远程通知提醒。
会话的免打扰状态将会被同步到服务端。融云会为用户自动在设备间同步会话免打扰状态数据。客户端可以通过监听器获取同步通知,也可以主动获取最新数据。
设置会话的免打扰状态(< 5.2.2)
RCIMClient
类提供 setConversationNotificationStatus
方法,可根据会话类型、会话 ID 设置消息提醒状态为「免打扰」。设置成功后,客户端在后台运行时或处于用户离线状态时,均不会收到该会话的新消息通知。修改完成后,您可以主动重新获取数据源刷新 UI。
IMKit SDK 未直接提供该方法,您需要使用 IMLib 中获取会话免打扰状态的方法。
[[RCIMClient sharedRCIMClient] setConversationNotificationStatus:ConversationType_PRIVATE
targetId:self.userId
isBlocked:YES
success:^(RCConversationNotificationStatus nStatus) {}
error:^(RCErrorCode status){}];
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型,单聊传入 ConversationType_PRIVATE |
targetId | NSString | 会话 ID |
isBlocked | BOOL | 是否屏蔽消息提醒 |
successBlock | BOOL | 设置成功的回调 |
errorBlock | BOOL | 设置失败的回调。回调参数 status 包含错误码,参见 RCErrorCode。 |
监听会话的免打扰状态同步
即时通讯业务支持会话状态(置顶状态数据和免打扰状态数据)同步机制。设置会话状态同步监听器后,如果会话状态改变,可在本端收到通知。
会话的置顶和免打扰状态数据同步后,SDK 会分发下面通知。
FOUNDATION_EXPORT NSString *const RCKitDispatchConversationStatusChangeNotification;
Notification 的 object 是 RCConversationStatusInfo
对象的数组,userInfo
为 nil。
注册通知监听器:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onConversationStatusChanged:)
name:RCKitDispatchConversationStatusChangeNotification
object:nil];
收到通知之后可以更新您的会话的状态。
- (void)onConversationStatusChanged:(NSNotification *)notification {
NSArray<RCConversationStatusInfo *> *conversationStatusInfos = notification.object;
}
获取会话的免打扰状态(< 5.2.2)
客户端可以主动获取最新的会话免打扰状态数据。
IMKit SDK 未直接提供该方法,您需要使用 IMLib 中获取会话免打扰状态的方法。
[[RCIMClient sharedRCIMClient] getConversationNotificationStatus:ConversationType_PRIVATE
targetId:self.userId
success:^(RCConversationNotificationStatus nStatus) {}
error:^(RCErrorCode status){}];
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型,单聊传入 ConversationType_PRIVATE |
targetId | NSString | 会话 ID |
success | BOOL | 设置成功的回调。回调参数 nStatus 为会话设置的消息提醒状态。参见RCConversationNotificationStatus |
error | BOOL | 设置失败的回调。回调参数 status 包含错误码,参见 RCErrorCode。 |
获取免打扰状态的会话列表(< 5.2.2)
获取所有设置了免打扰的会话。返回会话列表不包含具体免打扰级别信息,不包含频道信息。
IMKit SDK 未直接提供该方法,您需要使用 IMLib 中获取会话免打扰状态的方法。
NSArray *array = [[RCIMClient sharedRCIMClient] getBlockedConversationList:@[@(ConversationType_PRIVATE)]];
参数 | 类型 | 说明 |
---|---|---|
conversationTypeList | NSArray | 会话类型的数组,需要将 RCConversationType 转为 NSNumber 构建 Array。 |
获取成功后,返回设置了屏蔽消息提醒的会话 RCConversation 的列表。