跳到主要内容

获取聊天室历史消息

客户端 SDK 支持获取聊天室历史消息。具体能力如下:

  • 通过 [getRemoteHistoryMessages] 获取聊天室保存在服务端的历史消息。请注意,该功能依赖聊天室消息云端存储服务。

开通服务

使用 [getRemoteHistoryMessages] 要求开通 聊天室消息云端存储服务。使用前请确认已开通服务。开通后聊天室历史消息保存在云端,默认保存 2 个月。

获取聊天室远端历史消息

您可以通过 [getRemoteHistoryMessages] 获取聊天室远端历史记录。如果本地数据库存在相同时段内的历史消息,那么调用这个接口会返回一个 size 为 0 的数组。因此建议的调用顺序如下:

  1. 如果为空的话,再调用 [getRemoteHistoryMessages] 方法,传入聊天室 ID、消息的发送时间戳、查询方向,并指定要获取的消息数量等参数,从聊天室历史消息云存储中获取历史消息。在查询方向不变的情况下,当次返回的 time 的值可以作为下次拉取时的 time 传入,方便连续拉取。
    let conId = new ConversationIdentifier();
conId.conversationType = ConversationType.Chatroom;
conId.targetId = "聊天室 id";

let option: IGetRemoteMsgOption = {
time: Date.now(),
count: 10,
order: Order.Descending,
isCheckDup: true
}

IMEngine.getInstance().getRemoteHistoryMessages(conId, option)
.then(result => {
if (EngineError.Success !== result.code) {
// 获取聊天室消息失败
return;
}
if (!result.data) {
// 消息数据为空
return;
}
let msgList = result.data as List<Message>;
});