6

我开发了当前设置为“基于位置”的应用程序,以便它可以在后台无限运行。当用户移动时,这不是我需要它来做事情的技巧。经过一番搜索,我了解到这个应用程序只会在位置更改的情况下执行代码,没有任何计时器能够在 10 分钟后执行任何代码。

我的应用程序在后台保持连接到 XMPP 50 分钟左右,然后断开连接。我希望应用程序永远不会断开连接,我查看了框架,但找不到修复此行为的地方。你知道是否可以“无限期地”保持联系吗?如果是这样,我必须在 xmppframework 中更改哪些设置。

谢谢

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

4

1 回答 1

0

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

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

至于插座:

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

于 2012-02-18T15:15:01.660 回答