getConversationList

功能介绍

获取会话列表

用户的会话以列表的形式返回,列表中存储的是 V2TimConversation 对象。目前 IM SDK 对会话列表的排序规则为:

Flutter sdk 3.8.0及以后版本, 该接口获取的会话列表默认已经按照会话对象的 orderKey 做了排序。orderKey 值越大,代表该会话排序越靠前。orderKey 字段是整型数,当发送新消息、接收新消息、设置草稿或置顶会话时,会话被激活,orderKey 字段会增大。

Flutter sdk 3.8.0 以前版本,该接口获取的会话列表默认已经按照会话 lastMessage 的timestamp 做了排序。timestamp 越大,会话越靠前。

该接口拉取的是本地缓存的会话,如果服务器会话有更新,SDK 内部会自动同步,然后在 V2TimConversationListener 回调告知客户。

在某些场景下,可能出现会话的 lastMessage 为空(例如清空会话消息)。如果您使用 3.8.0 以前的 SDK,使用 lastMessage 排序时需要额外处理这种异常。我们建议您升级到 3.8.0 及以后的版本,使用 orderKey 字段排序。

本地存储的会话列表没有数量上限。

云端存储的会话列表最大数量为 100。如果您希望扩展此数量,可以升级旗舰版。旗舰版用户可以在控制台配置最高数量为 500。

长时间没有信息变更,该会话在云端最多保存 7 天。如需放宽限制,请 联系我们

本地存储的会话和云端存储的会话并不总是一致的,如果用户不主动调用 deleteConversation 接口删除本地的会话,该会话就会一直存在。而云端存储的会话最大只会保存 100 条,且对于长时间没有信息变更的会话,云端最多保存 7 天,所以不同的终端本地显示的会话可能会不一样。

会话列表更新案例

参数详解

参数名称 参数类型 是否必填 平台 描述
nextSeq String 全部 分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq
count int 全部 分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话

返回模板

V2TimValueCallback<V2TimConversationResult>

{
    code : int
    desc : String
    data : {
      conversationList : List<V2TimConversation>//此次拉取到的消息列表
      isFinished : bool//是否拉取完
      nextSeq : String//后续分页拉取的游标
    }
}

返回值详解

名称 数值类型 描述
code int 请求结果错误码
desc String 请求结果描述符
data V2TimConversationResult 此次拉取到的消息信息

代码示例

    //获取会话列表
    V2TimValueCallback<V2TimConversationResult> getConversationListRes =
        await TencentImSDKPlugin.v2TIMManager
            .getConversationManager()
            .getConversationList(
            count: 100, //分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话
            nextSeq: "0"//分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq
            );
    if (getConversationListRes.code == 0) {
      //拉取成功
      bool? isFinished = getConversationListRes.data?.isFinished;//是否拉取完
      String? nextSeq = getConversationListRes.data?.nextSeq;//后续分页拉取的游标
      List<V2TimConversation?>? conversationList =
          getConversationListRes.data?.conversationList;//此次拉取到的消息列表
      //如果没有拉取完,使用返回的nextSeq继续拉取直到isFinished为true
      if (!isFinished!) {
        V2TimValueCallback<V2TimConversationResult> nextConversationListRes =
            await TencentImSDKPlugin.v2TIMManager
                .getConversationManager()
                .getConversationList(count: 100, nextSeq: nextSeq = "0");//使用返回的nextSeq继续拉取直到isFinished为true
      }

      getConversationListRes.data?.conversationList?.forEach((element) {
        element?.conversationID;//会话唯一 ID,如果是单聊,组成方式为 c2c_userID;如果是群聊,组成方式为 group_groupID。
        element?.draftText;//草稿信息
        element?.draftTimestamp;//草稿编辑时间,草稿设置的时候自动生成。
        element?.faceUrl;//会话展示头像,群聊头像:群头像;单聊头像:对方头像。
        element?.groupAtInfoList;//群会话 @ 信息列表,通常用于展示 “有人@我” 或 “@所有人” 这两种提醒状态。
        element?.groupID;//当前群聊 ID,如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 null。
        element?.groupType;//当前群聊类型,如果会话类型为群聊,groupType 为当前群类型,否则为 null。
        element?.isPinned;//会话是否置顶
        element?.lastMessage;//会话最后一条消息
        element?.orderkey;//会话排序字段
        element?.recvOpt;//消息接收选项
        element?.showName;//会话展示名称,群聊会话名称优先级:群名称 > 群 ID;单聊会话名称优先级:对方好友备注 > 对方昵称 > 对方的 userID。
        element?.type;//会话类型,分为 C2C(单聊)和 Group(群聊)。
        element?.unreadCount;//会话未读消息数,直播群(AVChatRoom)不支持未读计数,默认为 0。
        element?.userID;//对方用户 ID,如果会话类型为单聊,userID 会存储对方的用户 ID,否则为 null。
      });
    }

results matching ""

    No results matching ""