会话置顶
IMKit 支持展示置顶会话。
提示
IMKit 可根据会话的置顶属性在会话列表中置顶展示会话,但未在 UI 上实现设置置顶功能。
局限
- IMKit 未在 UI 上实现设置会话置顶功能。
用法
您需要自行在 UI 上实现设置会话置顶的功能。用户设置会话置顶后,该状态将会被同步到服务端。融云会为用户自动在设备间同步会话置顶的状态数据。客户端可以通过监听器获取同步通知。
设置是否置顶
设置会话置顶后,会话将在会话列表页面置顶显示。所有置顶会话按照会话时间降序排列。
IMKit SDK 未直接提供该方法,您需要使用 IMLib 中的方法。
[[RCCoreClient sharedCoreClient] setConversationToTop:ConversationType_PRIVATE targetId:@"targetId" isTop:YES completion:^(BOOL ret) {
}];
客户端一般通过本地消息数据自动生成会话与会话列表。如果需要置顶的会话在本地尚不存在, SDK 会自动创建该会话。
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型,单聊传入 ConversationType_PRIVATE |
targetId | NSString | 会话 ID |
isTop | BOOL | 是否置顶 |
返回 YES
说明设置成功。
监听置顶状态同步
即时通讯业务支持会话状态(置顶状态数据和免打扰状态数据)同步机制。设置会话状态同步监听器后,如果会话状态改变,可在本端收到通知。
会话的置顶和免打扰状态数据同步后,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;
}
获取会话置顶状态与置顶会话
您可以从客户端主动获取会话置顶状态数据和置顶会话。
IMKit SDK 未直接提供该方法,您需要使用 IMLib 中的方法。详见 IMLib 文档会话置顶 中的获取会话置顶状态与获取置顶会话列表。
控制置顶会话展示顺序
如果需要在控制会话列表最顶部的置顶会话展示顺序,可通过修改数据源实现。重写 RCConversationListViewController
的以下方法,重组数据源并返回,根据您的需求调整置顶会话顺序。
/*!
即将加载增量数据源的回调
@param dataSource 即将加载的增量数据源(元素为RCConversationModel对象)
@return 修改后的数据源(元素为RCConversationModel对象)
@discussion 您可以在回调中修改、添加、删除数据源的元素来定制显示的内容,会话列表会根据您返回的修改后的数据源进行显示。
数据源中存放的元素为会话Cell的数据模型,即RCConversationModel对象。
2.9.21 及其以前版本,dataSource 为全量数据,conversationListDataSource = dataSource
2.9.22 及其以后版本,dataSource 为增量数据,conversationListDataSource += dataSource,如果需要更改全量数据的内容,可以更改 conversationListDataSource
*/
- (NSMutableArray *)willReloadTableData:(NSMutableArray *)dataSource;