SDKsiOS
加载历史消息
使用 iOS SDK 分页读取会话历史消息。
进入聊天页面或上拉加载更早的历史记录时,可调用高级历史消息拉取接口向过去方向分页查询消息列表。
OIMGetAdvancedHistoryMessageListParam *param = [OIMGetAdvancedHistoryMessageListParam new];
param.conversationID = conversationID;
param.startClientMsgID = startClientMsgID;
param.count = 20;
param.viewType = OIMGetHistoryViewTypeHistory;
[[OIMManager manager] getAdvancedHistoryMessageList:param
onSuccess:^(OIMGetAdvancedHistoryMessageListInfo * _Nullable result) {
// 更新列表与分页边界
[self prependMessages:result.messageList ?: @[]];
}
onFailure:^(NSInteger code, NSString * _Nullable msg) {
// 处理拉取失败
}];参数说明
OIMGetAdvancedHistoryMessageListParam 请求参数字段:
conversationID:目标会话 ID。startClientMsgID:分页锚点消息的客户端消息 ID(clientMsgID)。加载第一页最新历史时传nil;向上翻页加载更早消息时传入当前列表顶部消息的clientMsgID。count:每页期望获取的消息数量。viewType:视图查询类型,常用OIMGetHistoryViewTypeHistory。
返回结果
onSuccess:返回OIMGetAdvancedHistoryMessageListInfo对象。messageList:当前分页拉取到的消息数组(NSArray<OIMMessageInfo *>)。isEnd:是否已拉取到历史消息终点(即没有更早的消息)。为YES时应停止继续向上翻页。lastMinSeq:当前拉取分片的最小序列号。onFailure:拉取失败回调,返回错误码code和错误信息msg。
客户端状态合并
- 查询历史消息接口用于建立本地消息快照,调用成功不会触发新消息接收监听。
- 历史拉取结果与新消息推送可能存在部分重叠,客户端必须以
clientMsgID(限定当前conversationID)为合并标识去重,避免界面出现重复消息项。若需要从指定锚点向较新方向反向补齐消息,见反向加载历史消息。
这个页面有帮助吗?