使用QuickBlox接收离线消息时出现问题

时间:2015-04-08 09:56:58

标签: ios quickblox

我正在开发一款支持通过QuickBlox iOS SDK进行私聊的应用。一切正常,除了这个场景,假设我们有两个用户,UserA和UserB。如果成功登录QBChat,两者都可以接收消息。现在UserB从应用程序转到后台(我已经明确地将他从聊天中注销)。在这里,UserA发送消息“你正在离线!是的,你永远不会收到这条消息,因为QuickBlox中可能存在错误。”再次,UserB回到应用程序(我将让他再次登录QBChat),但奇怪的是他不会收到该消息,但它在QuickBlox页面中的应用程序仪表板上。同样,它还将该消息显示为lastMessageText对象的QBChatDialog。现在真正的恐怖场景将会到来,如果UserA发送A,B,C,D,E等消息,UserB再次进入后台。当他回到应用程序时,UserB只会收到B,C,D, E.而不是A队列中的第一个消息。是的,它也在应用程序仪表板上,也为QBChatDialog对象更新。

怎么了?

2 个答案:

答案 0 :(得分:1)

您需要添加自定义参数

QBChatMessage *message = [QBChatMessage message];
...
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"save_to_history"] = @YES;
[message setCustomParameters:params];

http://quickblox.com/developers/SimpleSample-chat_users-ios#Chat_history

答案 1 :(得分:0)

这仍然是一个问题,但我可以通过设置属性来解决它。

一旦您请求登录[QBSettings useTLSForChat:YES];,请设置QBChat

然而,这个问题的主要原因是当用户A将要离线并且同时用户B将发送消息M1,M2,M3 ......然后,A将只获得M2和M3 ...但是如果在用户A从QBChat注销几秒后,用户B将向他发送消息,然后A将获得所有三条消息。

<强>更新

从Quickblox iOS SDK 2.3开始,他们为[QBSettings useTLSForChat:YES];做了YES(默认情况下),所以我们不需要明确设置它。