IM 即时通讯
查询历史消息
更新时间: 2023/09/13 16:47:11
NIM SDK 的NIMQchatMessageManager
协议提供getMessageHistory:completion:
方法,支持从服务端查询指定时间段内最多limit
条历史消息。这里limit
指指定的查询结果上限。
调用说明
调用该方法,必须传入需要查询消息所属的服务器 ID(serverId
)和频道 ID(channelId
)。查询范围由开始时间(fromTime
)、结束时间(toTime
) 和 查询数量上限(limit
) 共同决定。如果 fromTime
到 toTime
之间消息大于 limit
条,返回 limit
条记录;如果小于 limit
条,返回实际条数;当已经查询到头时,返回的结果数量可能会比 limit
小。
同时可以设置排除查询的消息ID,用于排除查询时起始时间锚点的消息。如果fromTime
上有多条消息,可以指定excludeMsgId
所代表的消息的时间作为实际的起始时间。
toTime
如果设置为 0 则代表服务器当前时间。- 首次查询时,推荐将
fromTime
和toTime
都设置为 0 查询历史消息列表。再次查询时,则传入相应的fromTime
,toTime
和excludeMsgId
。
示例代码
调用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
}];
此文档是否对你有帮助?
有帮助
去反馈