浏览 SDKs · Android
平台
SDKsAndroid

加载历史消息

分页向更早的时间方向拉取会话的历史消息记录。

复制

从指定会话中向更早的时间方向分页拉取历史消息。首次拉取时不指定起始消息(传 null),后续加载时将上一页返回的最旧一条消息作为新的 startMsg 继续向前拉取。

String conversationID = "si_user_a_user_b";
Message startMessage = null; // 首次拉取传 null,后续传上一批次最旧的消息
int count = 20;

OpenIMClient.getInstance().messageManager.getAdvancedHistoryMessageList(
    new OnBase<AdvancedMessage>() {
        @Override
        public void onSuccess(AdvancedMessage result) {
            List<Message> messages = result.getMessageList();
            boolean reachedBeginning = result.isEnd();
            // 按 clientMsgID 去重后,将 messages 添加到当前聊天消息流顶部
        }

        @Override
        public void onError(int code, String error) {
            // 处理加载失败
        }
    },
    conversationID,
    startMessage,
    count,
    ViewType.History
);

参数说明

参数类型是否必填说明
baseOnBase<AdvancedMessage>是异步请求回调。
conversationIDString是期望读取历史消息的目标会话 ID。
startMsgMessage否分页起始定位消息。首次拉取传 null,后续传上一批次最旧的一条消息。
countint是本次获取的最大消息条数。
viewTypeViewType是视图类型,拉取普通历史消息传 ViewType.History。

返回结果

成功回调返回 AdvancedMessage 对象:

字段说明
messageList当前批次拉取到的消息列表 List<Message>。
isEnd是否已到达历史消息起点:true 表示本地与云端已无更早的历史记录,false 表示可继续加载。
errCode错误码。
errMsg错误描述。

客户端应以 clientMsgID 为标识进行消息去重与合并。历史消息加载为被动查询操作,不会触发实时新消息事件。