跳到主要内容

会话置顶

IMKit 支持展示置顶会话。

提示

IMKit 可根据会话的置顶属性在会话列表中置顶展示会话,但未在 UI 上实现设置置顶功能。

alt(width=250)

局限

  • IMKit 未在 UI 上实现设置会话置顶功能。

用法

您需要自行在 UI 上实现设置会话置顶的功能。用户设置会话置顶后,该状态将会被同步到服务端。融云会为用户自动在设备间同步会话置顶的状态数据。客户端可以通过监听器获取同步通知。

设置是否置顶

设置会话置顶后,会话将在会话列表页面置顶显示。所有置顶会话按照会话时间降序排列。

IMKit SDK 未直接提供该方法,您需要使用 IMLib 中的方法。

[[RCCoreClient sharedCoreClient] setConversationToTop:ConversationType_PRIVATE targetId:@"targetId" isTop:YES completion:^(BOOL ret) {

}];

客户端一般通过本地消息数据自动生成会话与会话列表。如果需要置顶的会话在本地尚不存在, SDK 会自动创建该会话。

参数类型说明
conversationTypeRCConversationType会话类型,单聊传入 ConversationType_PRIVATE
targetIdNSString会话 ID
isTopBOOL是否置顶

返回 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;