获取聊天室历史消息
客户端 SDK 支持获取聊天室历史消息。具体能力如下:
- 通过 getHistoryMessages 获取聊天室保存在本地的历史消息。请注意,聊天室业务默认在用户退出聊天室时会清除聊天室保存在本地的历史消息。
- 通过 getRemoteChatroomHistoryMessages 获取聊天室保存在服务端的历史消息。请注意,该功能依赖聊天室消息云端存储服务。
开通服务
使用 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
传入,方便连续拉取。
参数 | 类型 | 说明 |
---|---|---|
targetId | NSString | 聊天室 ID,最大长度为 64 个字符。 |
recordTime | long long | 消息发送时间戳(毫秒),表示获取 recordTime 之前或者之后的消息。 |
count | int | 需要获取的消息数量,最大不超过 200 条。 |
order | RCTimestampOrder | 拉取顺序。RC_Timestamp_Desc :降序,按消息发送时间递减的顺序,获取发送时间早于 recordTime 的消息。RC_Timestamp_Asc : 升序,按消息发送时间递增的顺序,获取发送时间晚于 recordTime 的消息。默认值为降序。 |
successBlock | Block | 获取成功的回调。 |
errorBlock | Block | 获取失败的回调。status 中返回错误码 RCErrorCode |