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

时间:2012-02-07 12:02:23

标签: iphone background xmppframework

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

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

感谢

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

1 个答案:

答案 0 :(得分:0)

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

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

至于套接字:

  

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