2012-07-24 257 views
0

我正在开发一个应用程序,即他的任务之一是将消息以tcp发送到服务器。我希望应用程序连续发送该tcp消息,即使用户退出该应用程序。IOS - 如何在后台运行应用程序?

我有,我可以做到这一点与:

“在你的Info.plist LSBackgroundOnly设置为1。”

但它不起作用(我刚刚在模拟器上测试过)。

非常感谢您的帮助!

+1

因为只有三个服务允许在后台运行:'location services','audio'和'VoIP',所以当应用程序转到后台或设备进入时,任何其他线程都将被挂起休眠模式,当用户退出应用程序时,应用程序将永久终止。 – holex 2012-07-24 16:24:16

+0

'LSBackgroundOnly'字面意思是你的应用程序可以*只能*在后台运行 - 它永远不会处于前台。显然,这在iOS上不可用。 – 2012-07-24 22:47:31

回答

3

我只是把Holex的评论放入答案表格来处理这个问题。正如他所说,在应用程序,位置服务,音频和VoIP背景中只允许运行三种类型的服务。关于你能做什么和不能做什么的很好的解读是来自苹果的以下http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html。当应用程序失去焦点时会发生什么结构的相当详细的文章。但是,如果您不打算通过应用程序商店发布,则可能伪造VoIP应用程序并在后台发送/接收消息。然而,这不是一个合理的解决方案,除非您需要快速且非常肮脏的东西,否则确实应该只用于其他方面。

iOS Voip Socket will not run in background这个问题,以及任何相关的问题都是很好的起点。