浏览 SDKs · HarmonyOS
平台
SDKsHarmonyOS商业版

获取会话列表

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

复制

使用分页接口建立当前账号的会话列表,不使用一次性完整列表接口。

import sdk, {
  EventOnConversationChangedData,
  EventOnNewConversationData,
  GetConversationListSplitReq,
  GetConversationListSplitResp,
  OpenIMSDKEvent,
} from '@openimsdk/imsdk';

const request: GetConversationListSplitReq = {
  pagination: {
    pageNumber: 1,
    showNumber: 50,
  },
};
const response: GetConversationListSplitResp = await sdk.getConversationListSplit(request);
mergeConversations(response.conversationList);

const handleNewConversation = (data: EventOnNewConversationData): void => {
  mergeConversations(data.conversationList);
};
const handleConversationChanged = (data: EventOnConversationChangedData): void => {
  mergeConversations(data.conversationList);
};
const unsubscribeNew = sdk.on(OpenIMSDKEvent.EventOnNewConversation, handleNewConversation);
const unsubscribeChanged = sdk.on(
  OpenIMSDKEvent.EventOnConversationChanged,
  handleConversationChanged,
);

export function removeConversationListListeners(): void {
  unsubscribeNew();
  unsubscribeChanged();
}

每次按 conversationID 去重。Promise 成功后,response.conversationList 返回当前分页的 IMConversation[]

字段类型说明
conversationIDstring会话 ID,也是列表去重和事件合并标识。
conversationTypeSessionType会话类型。
userIDgroupIDstring单聊用户 ID 或群组 ID;按会话类型读取。
showNamefaceURLstring会话显示名称和头像地址。
recvMsgOptConvRecvMsgOpt当前会话的消息接收方式。
unreadCountnumber当前未读数。
groupAtTypeConvGroupAtType群聊 @ 状态。
latestMsgIMMessage当前最新一条消息。
latestMsgSendTimenumber最新消息发送时间,Unix 毫秒时间戳。
draftTextdraftTextTimestringnumber会话草稿和草稿更新时间。
isPinnedboolean是否置顶。
isPrivateChatboolean是否开启阅后即焚。
burnDurationnumber阅后即焚倒计时,单位为秒。
isMsgDestructboolean是否定期删除服务端消息。
msgDestructTimenumber服务端消息保留时长,单位为秒。
remarkstring当前用户设置的会话备注。
isMarkedboolean是否标记会话,可与会话分组中的“标记”分组配合使用。
exstring会话扩展字符串。

退出账号或销毁会话状态层时调用两个取消订阅函数。事件到达并不代表当前分页已经完整;重连同步完成后可从第一页重新校准。