IM 即时通讯
查询历史消息
更新时间: 2023/01/31 10:30:03
SDK 提供了查询消息历史的接口,可查询 fromTime 到 toTime 之间的最多 limit 条消息。这里 limit 指上限。
调用说明
API 原型
/**
* 查询历史消息
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。回调返回查询到的历史消息
*/
InvocationFuture<QChatGetMessageHistoryResult> getMessageHistory(@NonNull QChatGetMessageHistoryParam param);
其中 QChatGetMessageHistoryParam 必须传入需要查询消息所属的 ServerId 和 channelId,查询范围由 fromTime、toTime 和 limit 共同决定,以先到为准。
同时可以设置排除查询的消息id,用于排除查询时起始时间锚点的消息。
- 如果 fromTime 上有多条消息,可以通过 setExcludeMessageId(Long excludeMsgId) 来指定实际的起始时间为 excludeMsgId 对应的消息的下一条消息时间。
- 如果fromTime到 toTime 之间消息大于 limit 条,返回 limit 条记录;如果小于 limit 条,返回实际条数;当已经查询到头时,返回的结果列表的 size 可能会比 limit 小。
toTime 如果设置为0则为当前时间。
默认返回逆序列表,可以通过 setReverse 设置是否反向。
如果17:00:00(fromTime )到18:00:00(toTime)的消息总共有200条,查询时最多返回100条。
- 如果isReverse() ==false(即默认方式),则返回后100条,时间逆序排列,时间从新到旧。
- 如果isReverse() ==true(反向方式),则前100条,时间正序排列,时间从旧到新。
当进行首次查询时,如果要查最新的100条,则fromTime=0, toTime=0, limit=0。
示例代码
//默认查询指定Channel下最新的100条消息
NIMClient.getService(QChatMessageService.class).getMessageHistory(new QChatGetMessageHistoryParam(943445L,885305L)).setCallback(
new RequestCallback<QChatGetMessageHistoryResult>() {
@Override
public void onSuccess(QChatGetMessageHistoryResult param) {
//查询成功
}
@Override
public void onFailed(int code) {
//查询失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//查询异常
}
});
此文档是否对你有帮助?
有帮助
我要吐槽