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
);参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
base | OnBase<AdvancedMessage> | 是 | 异步请求回调。 |
conversationID | String | 是 | 期望读取历史消息的目标会话 ID。 |
startMsg | Message | 否 | 分页起始定位消息。首次拉取传 null,后续传上一批次最旧的一条消息。 |
count | int | 是 | 本次获取的最大消息条数。 |
viewType | ViewType | 是 | 视图类型,拉取普通历史消息传 ViewType.History。 |
返回结果
成功回调返回 AdvancedMessage 对象:
| 字段 | 说明 |
|---|---|
messageList | 当前批次拉取到的消息列表 List<Message>。 |
isEnd | 是否已到达历史消息起点:true 表示本地与云端已无更早的历史记录,false 表示可继续加载。 |
errCode | 错误码。 |
errMsg | 错误描述。 |
客户端应以 clientMsgID 为标识进行消息去重与合并。历史消息加载为被动查询操作,不会触发实时新消息事件。
这个页面有帮助吗?