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

Ios 没有Xcode,应用程序在后台无法正常工作,ios,iphone,objective-c,xcode,multitasking,Ios,Iphone,Objective C,Xcode,Multitasking,我正在为iPhone构建一个活动分析器应用程序,我使用的是iOS 7。为了做到这一点,我使用CMMotionManager并访问加速计数据,然后将数据写入数据库。我的应用程序也必须在后台工作,我在代码中使用了队列、GCD、块和其他类似的东西来正确地完成这项工作。问题是,当iPhone插入Xcode时,所有这些都正常工作,但如果我在没有Xcode的情况下运行应用程序,应用程序运行大约4到5分钟。之后,它被终止。原因是什么 iOS应用程序只能在后台运行,如果它们适合苹果公司定义的后台模式之一,例如“

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

iOS应用程序只能在后台运行,如果它们适合苹果公司定义的后台模式之一,例如“应用程序注册位置更新”、“应用程序提供IP语音服务”、“应用程序播放音频”、“应用程序处理报摊工具包下载”、“应用程序使用CoreBluetooth通信”、“应用程序使用CoreBluetooth共享数据”等。您将在项目的“功能”部分的xcode中找到所有后台模式(单击项目名称左上角->主窗口->第二个选项卡)

如果您的应用适合这些模式之一,则必须在app.plist中通过设置“功能”部分中的复选框来启用此功能

如果你的应用程序不适合任何这些模式,你只能在后台运行有限的时间,然后iOS停止所有活动


对于测试,您可以启动任何后台模式。但是,当您的应用程序需要通过应用商店进行部署审查时,如果您未经授权而使用后台模式,苹果将拒绝该应用程序。

原因是iOS 7(实际上是所有版本的iOS)将暂停后台任务,并可能在其行为不当时终止该任务,只有某些类型的应用程序才能继续运行。这是上面的苹果文档:

因此,考虑到你的情况,你很可能不得不“撒谎”你的应用实际上是什么类型的应用,这会让你被应用商店拒绝

如果你真的决定进行黑客攻击,那么要非常小心电池寿命、cpu使用和内存使用,因为苹果这样做是有原因的


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

我已经从“功能”部分定义了后台模式。我的应用每秒读取40次加速计值并将其写入数据库。这就是我选择位置更新和后台提取部分的原因。当iPhone插入Xcode时,它可以正常工作。但如果没有Xcode,它就无法工作。我想知道为什么。你在哪台设备上测试?你在系统设置中启用了后台执行吗?我在iPhone 4上测试。在系统设置中启用了“后台应用程序刷新”。如果我的应用程序中有任何错误,它不应该与Xcode一起正常工作,不是吗?