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

反向加载历史消息

从消息锚点向较新消息方向分页读取历史记录。

复制

从搜索结果、回复消息或其他锚点进入聊天页,需要补齐锚点之后的消息时,调用 getHistoryMessageList() 并将 isReverse 设为 true。这不是实时接收接口;后续新消息仍由接收消息中的事件处理。

参数说明

参数类型是否必填说明
conversationIDstring锚点消息所属的会话 ID。
startClientMsgIDstring向较新方向读取时使用的锚点消息 ID。
countnumber本次最多读取的消息数量。
isReversebooleantrue,表示从锚点向较新消息方向读取。
viewTypeOpenIMMessageViewType历史消息视图传 OpenIMMessageViewTypeHistory;省略时 SDK 也按历史消息视图处理。
import {
  OpenIMMessageViewTypeHistory,
  getHistoryMessageList,
} from '@/uni_modules/unix-openim-sdk'

const page = await getHistoryMessageList({
  conversationID: conversationID,
  startClientMsgID: anchorMessage.clientMsgID ?? '',
  count: 30,
  isReverse: true,
  viewType: OpenIMMessageViewTypeHistory,
})

if (page != null && page.errCode == 0) {
  appendMessages(page.messageList)
}

锚点必须具有非空 clientMsgID;无法取得消息 ID 时,应先按 ID 查找消息或重新加载当前会话。继续分页时更新 startClientMsgIDisEnd 表示向较新方向是否已经到达当前历史边界。

返回对象字段与加载历史消息相同。不要在同一个滚动边界交替使用两个方向;加入列表时按 conversationID:clientMsgID 去重。