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

Issue in receiving offline messages with QuickBlox

我正在开发一款支持通过 QuickBlox iOS SDK 进行私人聊天的应用程序。一切正常,除了这个场景,假设我们有两个用户,UserA 和 UserB。如果他们成功登录 QBChat,他们都可以接收消息。现在 UserB 从应用程序转到后台(我已明确将他从聊天中注销)。在这里,UserA 再次发送一条消息 "You're offline! And yeah, you'll never get this message because there's a possible bug in QuickBlox.",UserB 返回到应用程序(我会让他在 QBChat 中再次登录),但奇怪的是他不会收到该消息,但是它在应用程序中QuickBlox 页面中的仪表板。同样,它也将该消息显示为 QBChatDialog 对象的 lastMessageText。现在真正恐怖的一幕来了,UserB 再次进入后台,如果 UserA 发送消息,A,B,C,D,E。当他回到应用程序时,UserB 将只收到 B,C,D, E. 而不是 A,它是队列中的第一条消息。是的,它也在应用程序仪表板上,并且还针对 QBChatDialog 对象进行了更新。

怎么了?

您需要添加自定义参数

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

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

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

但是这个问题的主要原因是当用户A将要下线时,同时用户B会发送消息M1,M2,M3 ...然后,A只会收到M2和M3 ...但是,如果用户 B 在用户 A 从 QBChat 注销后几秒钟向他发送消息,那么 A 将收到所有三条消息。

更新:

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