获取远端历史消息

服务器拉取历史消息记录,通常用户更换新设备后,拉取历史消息使用。

获取服务端历史消息参数说明:

参数 类型 说明
conversationType Conversation.ConversationType 会话类型
dateTime long 从该时间点开始获取消息。即:消息中的 sentTime;第一次可传 0,获取最新 count 条。
targetId String 根据不同的 conversationType,可能是用户 Id、群组 Id 或聊天室 Id
count String 要获取的消息数量,最多 20 条
callback ResultCallback> 回调

示例代码:

/**
 * 获取服务端历史消息。
 */
 RongIM.getInstance().getRemoteHistoryMessages(Conversation.ConversationType.PRIVATE, "", 0, 20, new RongIMClient.ResultCallback<List<Message>>() {
            @Override
            public void onSuccess(List<Message> messages) {
                
            }

            @Override
            public void onError(RongIMClient.ErrorCode e) {

            }
        });

从 SDK 2.9.22 版本开始增加 按指定时间获取该时间的前 N 条或后 N 条服务器历史消息。

获取服务端历史消息参数说明:

参数 类型 说明
conversationType Conversation.ConversationType 会话类型
remoteHistoryMsgOption RemoteHistoryMsgOption 详情参考下表
targetId String 根据不同的 conversationType,可能是用户 Id、群组 Id 或聊天室 Id
callback ResultCallback> 回调

RemoteHistoryMsgOption 参数说明:

参数 类型 说明
dataTime Conversation.ConversationType 从该时间点开始获取消息。即:消息中的 sentTime;如果本地库中没有消息,第一次可传 0,否则传入最早消息的sentTime,获取最新 count 条。
count RemoteHistoryMsgOption 要获取的消息数量,最多 20 条。
pullOrder String 拉取顺序
0: 降序,结合传入的时间戳参数,获取发送时间递增的消息
1: 升序,结合传入的时间戳参数,获取发送时间递减的消息
includeLocalExistMessage boolean 是否需要重复拉取
true: 拉取回来的消息,本地数据库存在,继续返回给用户
false: 拉取回来的消息,本地数据库存在,不返回给客户,只返回数据库中不存在的

示例代码:

/**
 * 获取服务端历史消息。
 */
RongIM.getInstance().getRemoteHistoryMessages(Conversation.ConversationType.PRIVATE, "", new RemoteHistoryMsgOption(), new RongIMClient.ResultCallback<List<Message>>() {
            @Override
            public void onSuccess(List<Message> messages) {
                
            }

            @Override
            public void onError(RongIMClient.ErrorCode e) {

            }
        });