获取历史消息
获取历史消息时,您可以选择仅从本地数据中获取、仅从远端获取或者同时从本地与远端获取。 超级群会话没有离线消息,如果想获取用户离线时候的消息需要您根据超级群会话最后一条消息去获取远端的历史消息。
- 如果您的应用/环境在 2022.10.13 日及以后开通超级群服务,超级群业务中会包含一个 ID 为
RCDefault的默认频道。如果发消息时不指定频道 ID,则该消息会发送到RCDefault频道中。在获取RCDefault频道的历史消息时,需要传入该频道 ID。- 如果您的应用/环境在 2022.10.13 日前已开通超级群服务,在发送消息时如果不指定频道 ID,则该消息不属于任何频道。获取历史消息时,如果不传入频道 ID,可获取不属于任何频道的消息。融云支持客户调整服务至最新行为。该行为调整将影响客户端、服务端收发消息、获取会话、清除历史消息、禁言等多个功能。如有需要,请提交工单咨询详细方案。
获取本地与远端历史消息
您可以通过 getMessages 方法先从本地获取历史消息,本地有缺失的情况下会从服务端同步缺失的部分。当本地没有更多消息的时候,会从服务端拉取。
接口
Java
interface IGetMessageCallbackEx{
void onComplete(List<Message> messageList, long syncTimestamp, boolean hasMoreMsg, IRongCoreEnum.CoreErrorCode errorCode);
void onFail(IRongCoreEnum.CoreErrorCode errorCode);
}
public void getMessages(final Conversation.ConversationType conversationType, final String targetId, final String channelId, final HistoryMessageOption historyMessageOption, final IRongCoreCallback.IGetMessageCallbackEx callback)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| conversationType | ConversationType | 会话类型 |
| targetId | String | 会话 ID |
| channel | String | 超级群频道 ID |
| historyMsgOption | HistoryMessageOption | 获取历史消息的配置选项。 |
| callback | IRongCoreCallback.IGetMessageCallback<List<Message>> | 获取历史消息的回调。 |
-
HistoryMessageOption说明:参数 说明 dataTime 时间戳,用于控制分页查询消息的边界。默认值为 0。count 要获取的消息数量。如果 SDK < 5.4.1,范围为 [2-20];如果 SDK ≧ 5.4.1,范围为 [2-100];默认值为 5。pullOrder 拉取顺序。 DESCEND:降序,按消息发送时间递减的顺序,获取发送时间早于dataTime的消息,返回的列表中的消息按发送时间从新到旧排列。ASCEND: 升序,按消息发送时间递增的顺序,获取发送时间晚于dataTime的消息,返回的列表中的消息按发送时间从旧到新排列。