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