我正在开发一款支持通过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
对象更新。
怎么了?
答案 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(默认情况下),所以我们不需要明确设置它。