2012-02-07 53 views
6

我开发的应用程序当前设置为“基于位置”,因此它可以无缝地在后台运行。当用户移动时,我不需要它做任何事情。 经过一番搜索之后,我了解到这个应用只会在发生位置变化时执行代码,10分钟后任何计时器都无法执行任何代码。XMPP框架 - 在后台连接的基于位置的应用程序

我的应用程序在后台保持与XMPP连接50分钟左右,然后断开连接。我希望应用程序永远不会断开,我查看了框架,但找不到解决此问题的地方。你知道是否有可能保持连接“indefinetly”?如果是的话,我必须在xmppframework中更改哪些设置。

感谢

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

+0

如果它仅与XMPPRooms断开连接,那么它可能与您在后端维护持续50分钟的会话有关。 – tipycalFlow 2012-02-07 12:36:20

+0

我已将我的服务器设置为:_不要断开闲置的客户端。_ 您的意思是什么设置? – subharb 2012-02-07 13:44:29

+0

我指的是房间的会话,如果它们与用户会话不同。您在编辑中提到用户会话保持不变,但XMPPRooms已断开 – tipycalFlow 2012-02-08 04:19:45

回答

0

要确保您的应用程序可以发送和接收保持活动消息,它需要是一个voip应用程序并使用voip套接字。从Apple's Documentation

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

至于套接字:

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

相关问题