IM 即时通讯
iOS
开发指南

查询历史消息

更新时间: 2023/09/13 16:47:11

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

示例代码

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

id<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
}];
此文档是否对你有帮助?
有帮助
去反馈
  • 调用说明
  • 示例代码