当应用程序处于后台并且 xmpp 由于互联网中断而断开连接时,如果互联网恢复正常,当我打开应用程序时,不会进行断开连接,因此应用程序不会尝试重新连接。
如果我检查 xmppstream 已连接,则显示为是。当我返回应用程序时,如何检查连接是否仍然存在?
目前我正在尝试断开连接,并在每次应用唤醒时连接。但理想的是检测断开连接......
谢谢
当应用程序处于后台并且 xmpp 由于互联网中断而断开连接时,如果互联网恢复正常,当我打开应用程序时,不会进行断开连接,因此应用程序不会尝试重新连接。
如果我检查 xmppstream 已连接,则显示为是。当我返回应用程序时,如何检查连接是否仍然存在?
目前我正在尝试断开连接,并在每次应用唤醒时连接。但理想的是检测断开连接......
谢谢
如果您可以检测到应用何时唤醒,则发送ping。如果您没有收到回复,请重新连接。如果您使用的 XMPP 库支持Stream Management,尤其是流恢复支持,您可以使用它来获取流。
一个更好的解决方案是有一个单独的守护进程来管理连接,并在后台保持活动状态,如果这在 iOS 上是允许的。此外,这个 XEP可能很有趣。
如果您使用的是 XMPPFramework (https://github.com/robbiehanson/XMPPFramework),那么看看 XMPPReconnect,它将为您省去很多重新连接的麻烦。
创建流后,使用以下内容。
xmppReconnect = [[XMPPReconnect alloc] init];
[xmppReconnect activate:xmppStream];
[xmppReconnect addDelegate:self delegateQueue:dispatch_get_main_queue()];