环境信息:
appid: iGDbGDP8LPncoRAbHtSKwp2d-gzGzoHsz
device_model: iPhone7,2
sdk_version: v4.2.0
os: iOS
is_jailbroken: 0
os_version: 10.2
表现:
. 第一次登陆游戏,保持在游戏中,在聊天频道内,可以正常接收消息,假设收到的是 1 ~ 20 条
. 关闭游戏,杀掉进程
. 等待 10 分钟,期间,聊天在继续,假设,消息继续增加 21 ~ 100 条
. 再次登录游戏,拉取历史消息 (limit 10条),可以正常获取到 91 ~ 100 这10 条
. 现在,以第 91 条消息的信息为基准,想要查询它之前的 10 条消息
* 这里出现 bug,获取到的,并不是 81 ~ 90,而是之前收到过的,11 ~ 20 条
测试数据信息:
conversationID
58ec7d942f301e006cf0d011
基准消息的 messageId
IZlEGxAUS1u7vNDXV1uGSA
基准消息的 timestamp
1492572673457
OC 代码:
-(void) listOlderMessageType:(NSString *) type
conversationID:(NSString *)conversationID
limit:(int)messageLimit
beforeMessageId:(NSString *)messageId
beforeTimestamp:(NSString *)timestamp
{
AVIMConversationQuery *query = [self.imClient conversationQuery];
[query getConversationById:conversationID callback:^(AVIMConversation *conversation, NSError *error) {
[conversation queryMessagesBeforeId:messageId timestamp:[timestamp longLongValue] limit:messageLimit callback:^(NSArray *objects, NSError *error) {
}];
}
此外,在 Android 上用同样的数据,同样的拉取数据测试后,没有发现任何问题,可以正常的获取到 81 ~ 90 数据。
JAVA 代码:
public void listOlderMessage(final String type, final String conversationId, int messageLimit, final String messageId, String timestmap) {
if (this.getImClient() != null) {
final AVIMConversation conversation = this.getImClient().getConversation(conversationId);
if (conversation != null) {
long lTimestamp = Long.parseLong(timestmap);
conversation.queryMessages(messageId, lTimestamp, messageLimit, new AVIMMessagesQueryCallback() {
@Override
public void done(final List<AVIMMessage> list, AVIMException e) {
}
});
}
}
}
iOS 的感觉是从本地的缓存拉取了数据,但是 queryMessagesBeforeId
貌似是不能够指定忽略缓存的策略的。
希望官方可以给些建议,谢谢了。