IM 即时通讯 (442)
Android (209)
- 初始化&链接 (8)
- 事件&监听处理 (7)
- 用户信息 (13)
- 会话列表 (16)
- 聊天会话 (26)
- 消息处理 (35)
- 自定义消息 (6)
- 音视频 (2)
- 推送&通知 (34)
- 扩展功能 (4)
- 第三方地图 (3)
- 依赖&配置 (9)
- 升级说明 (3)
- 其他 (43)
iOS (168)
- SDK 导入 (10)
- 连接 (8)
- 事件处理 (2)
- 用户信息 (3)
- 会话列表 (14)
- 聊天会话 (44)
- 消息处理 (26)
- 自定义消息 (8)
- 推送&通知 (19)
- 扩展功能 (5)
- 国际化 (4)
- 音视频 (3)
- 其他 (22)
Web (36)
Server (29)
开通历史消息云存储功能,获取融云服务器端的消息为空的问题
调用融云 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)