使用 QuickBlox 接收离线消息时出现问题
Posted
技术标签:
【中文标题】使用 QuickBlox 接收离线消息时出现问题【英文标题】:Issue in receiving offline messages with QuickBlox 【发布时间】:2015-04-08 09:56:57 【问题描述】:我正在开发一款支持通过 QuickBlox ios SDK 进行私人聊天的应用。一切正常,除了这个场景,假设我们有两个用户,用户 A 和用户 B。如果他们成功登录到QBChat
,两者都可以接收消息。现在 UserB 从应用程序转到后台(我已明确将他从聊天中注销)。在这里,UserA 发送一条消息“您离线!是的,您将永远不会收到此消息,因为 QuickBlox 中可能存在错误。”再次,UserB 回到应用程序(我会让他再次登录 QBChat
),但奇怪的是他不会收到该消息,但它在 QuickBlox 页面的应用程序仪表板上。同样,它也将该消息显示为 lastMessageText
的 QBChatDialog
对象。现在真正的恐怖场景来了,UserB再次进入后台,如果UserA发送A,B,C,D,E之类的消息。当他回到应用程序时,UserB只会收到B,C,D, E. 而不是队列中第一条消息的 A。是的,它也在应用程序仪表板上,并且还针对QBChatDialog
对象进行了更新。
怎么了?
【问题讨论】:
【参考方案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
【讨论】:
建议您将 Quickblox SDK 更新到最新版本quickblox.com/developers/IOS#Download_iOS_SDK 我的聊天示例中没有这个错误,它按预期工作。你能给我你的示例项目吗? 我用这个项目测试QBChat quickblox.com/developers/SimpleSample-chat_users-ios 之前没遇到过这个问题【参考方案2】:这仍然是一个问题,但我可以通过设置属性来解决它。
一旦您请求登录QBChat
,设置[QBSettings useTLSForChat:YES];
。
然而,这个问题的主要原因是当用户 A 将要下线时,同时用户 B 将发送消息 M1、M2、M3 ......那么,A 只会得到 M2 和 M3......但是如果用户 B 将在用户 A 从QBChat
注销几秒钟后向他发送消息,然后 A 将收到所有三个消息。
更新:
从 Quickblox iOS SDK 2.3 开始,他们为 [QBSettings useTLSForChat:YES];
设置了 YES(默认情况下),因此我们不需要显式设置它。
【讨论】:
以上是关于使用 QuickBlox 接收离线消息时出现问题的主要内容,如果未能解决你的问题,请参考以下文章