跳到主要内容

获取聊天室历史消息

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

开通服务

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

获取聊天室远端历史消息

您可以通过 getRemoteChatroomHistoryMessages 获取聊天室远端历史记录。如果本地数据库存在相同时段内的历史消息, 那么调用这个接口会返回一个 size 为 0 的数组。因此请先调用 getHistoryMessages 获取本地的历史记录,如果为空的话,再调用 getRemoteChatroomHistoryMessages 来获取远端历史记录。

NSArray *history = [[RCIMClient sharedRCIMClient]
getHistoryMessages:ConversationType_CHATROOM
targetId:@"chatroomId"
oldestMessageId:lastMessageID
count:count];
if (history.count == 0) {
[[RCIMClient sharedRCIMClient]
getRemoteChatroomHistoryMessages:@"chatroomId"
recordTime:recordTime
count:50
order:RC_Timestamp_Desc
success:^(NSArray *messages, long long syncTime) {

} error:^(RCErrorCode status) {

}];
}

获取成功的 successBlock 中会返回获取到的历史消息数组和 syncTime。 如果拉取顺序为 RC_Timestamp_Desc,为拉取结果中最早一条消息的时间戳(即最小的时间戳)。如果拉取顺序为 RC_Timestamp_Asc,为拉取结果中最晚消息的时间戳(即最大的时间戳)。在拉取顺序不变的情况下,当次返回的 syncTime 的值可以作为下次拉取时的 recordTime 传入,方便连续拉取。

参数类型说明
targetIdNSString聊天室 ID,最大长度为 64 个字符。
recordTimelong long消息发送时间戳(毫秒),表示获取 recordTime 之前或者之后的消息。
countint需要获取的消息数量,最大不超过 200 条。
orderRCTimestampOrder拉取顺序。RC_Timestamp_Desc:降序,按消息发送时间递减的顺序,获取发送时间早于 recordTime 的消息。RC_Timestamp_Asc: 升序,按消息发送时间递增的顺序,获取发送时间晚于 recordTime 的消息。默认值为降序。
successBlockBlock获取成功的回调。
errorBlockBlock获取失败的回调。status 中返回错误码 RCErrorCode