查询历史消息
更新时间: 2024/06/21 10:12:09
云信 IM SDK 支持查询圈组历史消息功能。
查询历史消息
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
。
可以设置是否查询本地发送失败的消息记录,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
}];
根据消息 ID 批量查询历史消息
调用 getMessageHistoryByIds:completion:
方法,可根据回复消息的 ID 数组查询圈组历史消息。查询结果不分页,一次最多查询 100 条。
该方法的入参结构 NIMQChatGetMessageHistoryByIdsParam
中需要传入需要查询的 serverId
、channelId
和消息列表 NIMQChatMessageServerIdInfo
。该方法的回参结构NIMQChatGetMessageHistoryResult
中返回查询到的消息列表。