logo
当前页

置顶会话


功能简介

会话置顶指的是将单聊或者群聊会话固定于会话列表的顶部,不会被其他非置顶会话挤到底部,方便用户查找。用户通过客户端将会话置顶后,置顶状态会存储在服务器,因此,当用户切换终端设备后,置顶状态会同步到当前设备。

ZIM 支持用户置顶会话,以及查询置顶会话列表。

说明
  • 仅支持 2.8.0 或以上版本的 ZIM SDK 实现会话置顶。
  • 置顶会话数量上限为 100。

置顶顺序说明

  • 置顶会话始终排在未置顶会话之前。

    说明

    对于通过调用 queryConversationListWithConfig 接口拉取的会话列表,此规则同样适用。开发者可以通过拉取结果中 ZIMConversation 的 isPinned 字段,确认会话是否被置顶。

  • 用户置顶多个会话后,相关会话之间的相对顺序仍然会保持。
    假设有 5 个会话,在会话列表中的现有排序为:a、b、c、d、e。
    用户将会话 b 和 d 置顶(不论先置顶哪个),顺序变更为 b、d、a、c、e,即 b 和 d 排在最前面,并且会话 b 仍然排在 d 之前。

    说明

    上述场景成立的前提为会话的 orderKey 没有被其他事件改变(如收到新消息后,会话的 order key 会变大)。当 orderKey 变化后,置顶会话列表中的顺序会改变。

置顶会话

用户登录后,可调用 updateConversationPinnedState 接口置顶或取消置顶自己会话列表中的某个会话。

示例代码
// 置顶某单聊会话
bool isPinned = YES;

[[ZIM getInstance] updateConversationPinnedState:isPinned conversationID:@"conversationID" conversationType:ZIMConversationTypePeer callback:^(NSString * _Nonnull conversationID, ZIMConversationType conversationType, ZIMError * _Nonnull errorInfo) {
    //业务逻辑
}];
1
Copied!

查询置顶会话列表

用户登录后,可以通过 queryConversationPinnedListWithConfig 接口,获取全量的置顶会话列表。

示例代码
ZIMConversationQueryConfig *queryConfig = [[ZIMConversationQueryConfig alloc] init];
// 每次获取置顶会话的数量
queryConfig.count = 20;
// 首次查询无需传入
queryConfig.nextConversation = nil;
[[ZIM getInstance] queryConversationPinnedListWithConfig:queryConfig callback:^(NSArray<ZIMConversation *> * _Nonnull conversationList, ZIMError * _Nonnull errorInfo) {
    if(errorInfo.code != ZIMErrorCodeSuccess){
        NSLog(@"请根据实际错误码与错误信息,对照错误码表来处理");
        return;
    }
    NSLog(@"conversationList 为查询结果");

    // 下次查询时将末尾的 conversation 传入即可在上次查询结果的基础上继续查询后续内容
    queryConfig.nextConversation = [conversationList lastObject];
}];
1
Copied!

Previous

删除会话

Next

查询会话