浏览 SDKs · uni-app / uni-app x
平台
SDKsuni-app / uni-app x

获取会话列表

分页获取当前用户的会话列表,并同步后续会话变化。

复制

会话列表属于当前登录用户。应使用 getConversationListSplit() 分页读取,避免一次加载完整列表。第一页从 offset: 0 开始,继续加载时按已请求的条目数增加偏移量。

参数说明

参数类型是否必填说明
offsetnumber起始偏移量,第一页传 0
countnumber本次读取的会话数量。
import { getConversationListSplit } from '@/uni_modules/unix-openim-sdk'

const result = await getConversationListSplit({
  offset: 0,
  count: 50,
})
const conversations = result?.conversations ?? []
mergeConversations(conversations)

Promise 成功后返回 OpenIMConversationListResult | null,当前页会话位于 conversations。合并分页时应按 conversationID 去重;本次返回数量小于 count 时,可视为到达列表末尾。重新登录、用户主动刷新或需要确认完整列表时,应清空旧分页状态并从第一页重新读取。

会话字段

OpenIMConversationItem 同时包含聊天目标、列表展示和当前账号的会话设置:

字段类型说明
conversationIDstring会话的稳定 ID,用于合并查询结果和事件。
conversationTypeOpenIMSessionType会话类型,例如单聊或群聊。
userIDstringnull单聊对方的用户 ID;群聊中通常为空。
groupIDstringnull群聊对应的群组 ID;单聊中通常为空。
showNamestring当前会话记录中的展示名称。
faceURLstring当前会话记录中的展示头像。
latestMsgstringnull最后一条消息的序列化内容;为空表示没有可展示的末条消息。
latestMsgSendTimenumber最后一条消息发送时间,Unix 毫秒时间戳。
unreadCountnumber当前账号在该会话中的未读消息数。
recvMsgOptOpenIMMessageReceiveOption该会话的消息接收方式。
groupAtTypeOpenIMGroupMentionType群聊中的 @ 提醒状态;单聊不使用。
draftTextstring当前客户端保存的会话草稿。
draftTextTimenumber草稿更新时间,Unix 毫秒时间戳。
isPinnedboolean会话是否置顶。
isMarked 商业版booleannull当前用户是否标记了该会话。标记后的会话会进入内置“标记一组”。
remark 商业版stringnull当前用户为该会话设置的备注;为空表示未设置备注。
isPrivateChat 商业版boolean是否启用私聊阅后即焚。
burnDuration 商业版number私聊阅后即焚时长,单位为秒。
isMsgDestruct 商业版boolean是否启用定期删除服务端消息。
msgDestructTime 商业版number服务端消息删除周期,单位为秒。
isNotInGroupboolean当前账号是否已不在该群组中。
updateUnreadCountTimenumber会话未读数最后更新时间,Unix 毫秒时间戳。
minSeqnumber当前会话已同步消息的最小序列号。
maxSeqnumber当前会话已同步消息的最大序列号。
exstring会话扩展字符串。
attachedInfostringSDK 附加信息,只按已确认的业务约定解析。

列表标题和头像可以使用 showNamefaceURL。好友或群资料变化时,应通过对应资料事件或重新查询获取最新内容;不要根据展示名称生成会话 ID。

同步会话变化

本页负责 onNewConversation()onConversationChanged() 的完整监听。两个处理器都收到 OpenIMConversationListResult | null,一次事件可能携带多条会话;应遍历 conversations 并按 conversationID 合并。

import {
  OpenIMConversationListResult,
  off,
  onConversationChanged,
  onNewConversation,
} from '@/uni_modules/unix-openim-sdk'

const handleConversationUpdates = (
  result: OpenIMConversationListResult | null,
) => {
  if (result == null) return
  mergeConversations(result.conversations)
}

const newConversationSubscription = onNewConversation(
  handleConversationUpdates,
)
const conversationChangedSubscription = onConversationChanged(
  handleConversationUpdates,
)

function removeConversationListListeners() {
  off(newConversationSubscription)
  off(conversationChangedSubscription)
}

组件卸载、退出登录或切换账号时调用 removeConversationListListeners()。不要用已加入群组列表替代会话列表:用户可能已加入群组但尚未产生会话,也可能退出群组后仍保留历史会话记录。