跳到主要内容

设置会话免打扰

  • 本文仅描述了 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){}];
参数类型说明
conversationTypeRCConversationType会话类型,单聊传入 ConversationType_PRIVATE
targetIdNSString会话 ID
isBlockedBOOL是否屏蔽消息提醒
successBlockBOOL设置成功的回调
errorBlockBOOL设置失败的回调。回调参数 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){}];
参数类型说明
conversationTypeRCConversationType会话类型,单聊传入 ConversationType_PRIVATE
targetIdNSString会话 ID
successBOOL设置成功的回调。回调参数 nStatus 为会话设置的消息提醒状态。参见RCConversationNotificationStatus
errorBOOL设置失败的回调。回调参数 status 包含错误码,参见 RCErrorCode

获取免打扰状态的会话列表(< 5.2.2)

获取所有设置了免打扰的会话。返回会话列表不包含具体免打扰级别信息,不包含频道信息。

IMKit SDK 未直接提供该方法,您需要使用 IMLib 中获取会话免打扰状态的方法。

NSArray *array = [[RCIMClient sharedRCIMClient] getBlockedConversationList:@[@(ConversationType_PRIVATE)]];
参数类型说明
conversationTypeListNSArray会话类型的数组,需要将 RCConversationType 转为 NSNumber 构建 Array。

获取成功后,返回设置了屏蔽消息提醒的会话 RCConversation 的列表。