iOS

查询历史消息

更新时间: 2024/03/14 17:08:37

NIM SDK 的NIMQchatMessageManager协议提供getMessageHistory:completion:方法,支持查询指定时间段内最多limit条历史消息。这里limit指指定的查询结果上限。

调用说明

调用该方法,必须传入需要查询消息所属的服务器 ID(serverId)和频道 ID(channelId)。查询范围由开始时间(fromTime)、结束时间(toTime) 和 查询数量上限(limit) 共同决定。如果 fromTimetoTime 之间消息大于 limit 条,返回 limit 条记录;如果小于 limit 条,返回实际条数;当已经查询到头时,返回的结果数量可能会比 limit 小。

同时可以设置排除查询的消息ID,用于排除查询时起始时间锚点的消息。如果fromTime上有多条消息,可以指定excludeMsgId所代表的消息的时间作为实际的起始时间。

  • toTime 如果设置为 0 则代表服务器当前时间。
  • 首次查询时,推荐将fromTimetoTime都设置为 0 查询历史消息列表。再次查询时,则传入相应的fromTime, toTimeexcludeMsgId

可以设置是否查询本地发送失败的消息记录,includeLocalMessages= NO(默认),只查询服务端历史消息;includeLocalMessages= YES,即同时查询服务端和本地发送失败的历史消息。

示例代码

调用getMessageHistory:completion:方法的示例代码如下:

objcid<NIMQChatMessageManager> qchatMessageManager = [[NIMSDK sharedSDK] qchatMessageManager];
NIMQChatGetMessageHistoryParam *param = [[NIMQChatGetMessageHistoryParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.fromTime = 0;
//如果fromTime上有多条消息,可以通过excludeMsgId来指定实际的起始消息为excludeMsgId对应的消息的下一条
param.limit = @(20);
[qchatMessageManager getMessageHistory:param
           completion:^(NSError *__nullable error, NIMQChatGetMessageHistoryResult *__nullable result) {
    // your code
}];
此文档是否对你有帮助?
有帮助
去反馈
  • 调用说明
  • 示例代码