getConversationList
(Details) 获取会话列表。该接口拉取的是本地缓存的会话,如果服务器会话有更新,SDK 内部会自动同步,然后在 V2TIMConversationListener
回调告知客户。V2TIMConversation
对象。目前 IM SDK 对会话列表的排序规则为:orderKey
做了排序。orderKey
值越大,代表该会话排序越靠前。orderKey
字段是整型数,当发送新消息、接收新消息、设置草稿或置顶会话时,会话被激活,orderKey
字段会增大。getConversationList
实现一次性拉取或分页拉取。参见下文说明。const nextSeq = "0";const count = 100;const convList = await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationList(count, nextSeq);
getConversationList
时,指定参数 nextSeq
为 0(表示从头开始拉取会话列表),指定 count
为 50(表示一次拉取 50 个会话对象)。getConversationList
的回调结果 V2TIMConversationResult
中会包含 nextSeq
(下次分页拉取的字段)、isFinish
(会话拉取是否完成)。isFinished
为 true,表示所有会话已经拉取完成。isFinished
为 false,表示还有更多的会话可以拉取。此时并不意味着要立刻开始拉取 “下一页” 的会话列表。在常见的通信软件中,分页拉取通常由用户的滑动操作触发的,用户每上拉一次会话列表就触发一次分页拉取。getConversationList
接口,并传入新一轮的 nextSeq
和 count
参数(数值来自上一次拉取返回的 V2TIMConversationResult
对象)。isFinished
返回 true。const nextSeq = "0";const count = 100;const convList = await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationList(count, nextSeq);const seq = convList.data.nextSeq;if (!convList.data.isFinished) {// 如果未完全拉取const convList = await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationList(count, seq);}
TencentImSDKPlugin.v2TIMManager.getConversationManager().addConversationListener({onConversationChanged: (conversationList) => {},//其他 ));});
事件 | 说明 | 建议 |
onSyncServerStart | 同步服务器会话开始 | SDK 会在登录成功或者断网重连后自动同步服务器会话,您可以监听这个事件做一些 UI 进度展示操作。 |
onSyncServerFinish | 同步服务器会话完成 | 如果会话有变更,会通过 onNewConversation /onConversationChanged 回调告知。 |
onSyncServerFailed | 同步服务器会话失败 | 您可以监听这个事件做一些 UI 异常展示操作。 |
onNewConversation | 有会话新增 | 例如收到一个新同事发来的单聊消息、被拉入了一个新的群组中,此时可以重新对会话列表做排序。 |
onConversationChanged | 有会话更新 | 例如未读计数发生变化、最后一条消息被更新等,此时可以重新对会话列表做排序。 |
onTotalUnreadMessageCountChanged | 会话未读总数变更通知 |
// 监听会话TencentImSDKPlugin.v2TIMManager.getConversationManager().addConversationListener({onConversationChanged: (conversationList) => {},onNewConversation: (conv) => {},onSyncServerFailed: () => {},onSyncServerFinish: () => {},onSyncServerStart: () => {},onTotalUnreadMessageCountChanged: (count) => {},});
conversationManager.removeConversationListener(conversationListener);
lastMessage
的消息V2TIMConversation
的 lastMessage
作为数据源实现。但是某些场景下,如果您不希望一些消息(例如系统提示等)显示为会话的最新消息,可以在 sendMessage
时设置 isExcludedFromLastMessage
为 false
/no
。
本页内容是否解决了您的问题?