XMPP框架 - 基于位置的应用程序在后台连接

sub*_*arb 6 iphone background xmppframework

我开发和应用程序,当前设置为"基于位置",以便它可以在后台无限制地运行.当用户移动时,我不需要它来做任何事情.经过一些搜索后,我了解到这个应用程序只会在位置发生变化时执行代码,10分钟后无法执行任何代码.

我的应用程序在后台保持与XMPP连接50分钟左右,然后断开连接.我希望应用程序永远不会断开,我看着框架,但我找不到解决此问题的地方.你知道是否可以"坚定地"保持联系?如果是这样,我必须在xmppframework中更改哪些设置.

谢谢

[编辑] 50分钟后,用户仍然连接到XMPP,但它已被连接的XMPPRoom断开连接.在另一次运行中它连接了3个小时,iPhone连接的时间似乎不一致.

Yon*_*nat 0

为了确保您的应用程序可以发送和接收保持活动消息,它需要是一个 voip 应用程序并使用 voip 套接字。来自苹果的文档

\n\n
\n
    \n
  1. 将 UIBackgroundModes 键添加到您的 app\xe2\x80\x99s Info.plist 文件中。将此键的值设置为包含 voip 值的数组。
  2. \n
  3. 配置 app\xe2\x80\x99s 套接字之一以供 VoIP 使用。
  4. \n
  5. 在进入后台之前,调用 setKeepAliveTimeout:handler: 方法安装一个要定期执行的处理程序。您的应用程序可以使用此处理程序来维护其服务连接。
  6. \n
\n
\n\n

至于插座:

\n\n
\n

NSInputStream 和 NSOutputStream:对于 Cocoa 流,使用 setProperty:forKey: 方法将 NSStreamNetworkServiceType 属性添加到流中。该属性的值应设置为 NSStreamNetworkServiceTypeVoIP。

\n
\n