没有Xcode,应用程序在后台无法正常工作

时间:2013-12-07 20:17:53

标签: ios iphone objective-c xcode multitasking

我正在为iPhone构建活动分析器应用程序,我使用iOS 7.为了做到这些,我使用CMMotionManager并访问加速度计数据。之后我将数据写入数据库。我的应用程序也必须在后台工作,我在我的代码中使用队列,GCD,块和其他类似的东西来正确地执行此操作。问题是,当iPhone插入Xcode时所有这些都正常工作,但如果我在没有Xcode的情况下运行应用程序,应用程序运行大约4或5分钟。之后,它终止。这是什么原因?

2 个答案:

答案 0 :(得分:2)

iOS应用只能在后台运行,如果它们适合苹果定义的背景模式之一,例如"用于位置更新的应用寄存器",#34;应用提供IP语音服务", "应用程序播放音频",#34;应用程序进程报亭工具包下载","应用程序使用CoreBluetooth进行通信"",应用程序使用CoreBluetooth共享数据"还有一些。您可以在项目的功能部分中找到xcode中的所有背景模式(单击项目名称左上角 - >主窗口 - >第二个选项卡)。

如果您的应用适合其中一种模式,则必须通过设置功能部分中的复选框在app.plist中启用此功能。

如果您的应用不适合这些模式,您只能在有限的时间内在后台运行,然后iOS会停止所有活动。

对于测试,您可以启动任何后台模式。但是,当您的应用程序通过应用程序商店进行部署审核时,如果您使用后台模式而没有合法性,Apple将拒绝该应用程序。

答案 1 :(得分:1)

原因是iOS 7(实际上是iOS的所有版本)将暂停后台任务,并且如果行为不当可能会终止它,只有某些类型的应用程序可以继续运行。以下是苹果文档:https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW20

因此,根据您的情况,您很可能不得不“谎言”您的应用实际上是什么类型的应用,这会让您从应用商店中被拒绝。

如果您决定采用黑客攻击的路线,请特别注意电池寿命,CPU使用率和内存使用情况,因为Apple有此原因。

仅供参考:“类型”在Info.plist文件中设置。