开通历史消息云存储功能,获取融云服务器端的消息为空的问题

调用融云 SDK 中的接口 getRemoteHistoryMessages, 获取不到历史消息,返回结果为 null
发布时间: 2019-01-18 11:52

回答:

需要留意参数 dateTime 的设置值

调用 getRemoteHistoryMessages 返回的是本地数据库中没有存储的 Message,如果本地数据库中已经存在一个时间段的 Messages,那么调用 getRemoteHistoryMessages 获取这个时间段的消息会返回 null 。

所以在刚开始获取历史消息的时候先调用 getHistoryMessage 获取本地数据库中存在的 Messages,如果本地数据库中的 Messages 取完了,那么记录下最后获取的 Message 的 sentTime,再调用 getRemoteHistoryMessages 这个接口,这个时候 dateTime(getRemoteHistoryMessages的第三个形参)传递就是刚才记录下的sentTime。

/**
 * <p>获取融云服务器中暂存,特定类型,targetId 的N条(一次不超过20条)历史消息记录。通过此接口可以根据情况分段加载历史消息,节省网络资源,提高用户体验。</p>
 * <p>区别于 {@link #getHistoryMessages},该接口是从融云服务器中拉取。通常用于更换新设备后,拉取历史消息。
 * 公众服务会话 {@link io.rong.imlib.model.Conversation.ConversationType#APP_PUBLIC_SERVICE}
 * {@link io.rong.imlib.model.Conversation.ConversationType#PUBLIC_SERVICE} </p>
 *
 * @param conversationType 会话类型。
 * @param targetId         目标 Id。根据不同的 conversationType,可能是用户 Id、群组 Id。
 * @param dateTime         从该时间点开始获取消息。即:消息中的 sentTime;第一次可传 0,获取最新 count 条。
 * @param count            要获取的消息数量,最多 20 条。
 * @param callback         获取历史消息记录的回调,按照时间顺序从新到旧排列。
 */public void getRemoteHistoryMessages(final Conversation.ConversationType conversationType, final String targetId, final long dateTime, final int count, final ResultCallback<List<Message>> callback)



我对此仍有疑问!继续追问