SDKsReact Native
获取会话列表
分页获取当前登录账号的会话列表。
使用 getConversationListSplit() 分页获取会话。
const conversations = await OpenIMSDK.getConversationListSplit({
offset: 0,
count: 50,
});参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
offset | number | 是 | 分页偏移量,首页传 0。继续加载时按已请求的条目数递增。 |
count | number | 是 | 本次请求的会话数量。 |
返回结果
调用完成后返回当前页的 ConversationItem[]。当返回数量小于 count 时,表示已经读取到当前列表末尾。
会话字段
ConversationItem 同时包含聊天目标、列表展示和当前账号的会话设置:
| 字段 | 类型 | 说明 |
|---|---|---|
conversationID | string | 会话 ID。 |
conversationType | SessionType | 会话类型,单聊或群聊。 |
userID | string | 单聊对方的用户 ID;群聊中通常为空。 |
groupID | string | 群聊对应的群组 ID;单聊中通常为空。 |
showName | string | 会话的展示名称。 |
faceURL | string | 会话的展示头像地址。 |
recvMsgOpt | MessageReceiveOptType | 当前会话的消息接收方式。 |
unreadCount | number | 当前会话的未读消息数。 |
groupAtType | GroupAtType | 群聊中的提醒状态;单聊不使用。 |
latestMsg | string | 最后一条消息的 JSON 序列化内容。 |
latestMsgSendTime | number | 最后一条消息的发送时间。 |
draftText | string | 当前设备保存的会话草稿。 |
draftTextTime | number | 草稿更新时间。 |
isPrivateChat | boolean | 是否开启私聊阅后即焚。 |
burnDuration | number | 私聊阅后即焚时长。 |
isMsgDestruct | boolean | 是否开启服务端消息定期删除。 |
msgDestructTime | number | 服务端消息定期删除周期。 |
isPinned | boolean | 会话是否置顶。 |
isMarked 商业版 | boolean | 会话是否已标记。 |
isNotInGroup | boolean | 当前账号是否已不在该群组中。 |
attachedInfo | string | SDK 附加信息。 |
ex | string(可选) | 会话扩展字符串。 |
remark 商业版 | string(可选) | 会话备注。 |
拉取会话列表时,应按 conversationID 合并分页结果去重,避免同一会话重复出现在列表中。刷新列表时从 offset: 0 重新读取。
监听会话变化
新建会话时触发 OnNewConversation,已有会话发生变化时触发 OnConversationChanged。两个事件的回调参数都是 ConversationItem[]。
function handleNewConversation(conversations: ConversationItem[]) {
// ...
}
function handleConversationChanged(conversations: ConversationItem[]) {
// ...
}
// 设置监听
OpenIMSDK.on(OpenIMEvent.OnNewConversation, handleNewConversation);
OpenIMSDK.on(OpenIMEvent.OnConversationChanged, handleConversationChanged);
// 取消监听
OpenIMSDK.off(OpenIMEvent.OnNewConversation, handleNewConversation);
OpenIMSDK.off(OpenIMEvent.OnConversationChanged, handleConversationChanged);退出登录、切换账号或销毁会话列表状态时,取消监听。
这个页面有帮助吗?