iOS后台执行和防止应用程序被暂停/终止

时间:2014-07-25 04:16:34

标签: ios core-location

我正在开发内部分布式iOS应用程序(即没有应用程序商店),我希望能够以10分钟的间隔报告设备的位置。

无论如何,我已将location作为密钥包含在我的plist中的UIBackgroundModes字段中,希望这足以让我的应用程序在后台运行,而我每次都会运行一个计时器10分钟。但是,我发现在某些情况下,应用会停止报告这些事件。我怀疑应用程序被移入暂停状态,或许甚至因内存限制而终止。我用仪器来分析我的内存占用情况,并且我已经排除了失控的内存分配作为终止的原因。

如何阻止系统将我的应用程序移至暂停状态?文档说明了位置背景模式:

  

启用此模式不会阻止系统暂停   应用程序,但它确实告诉系统它应该唤醒应用程序   每当有新的位置数据要传递时

大。因此它可能会被暂停,但新的位置数据将重新唤醒它。但是如果没有新的位置数据怎么办?我可以阻止应用程序被暂停吗?也许使用不同的backgruond模式?

任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:0)

您需要两件事来阻止位置管理器暂停,有:

self.locationManager.allowsBackgroundLocationsUpdates = true self.locationManager.pausesLocationUpdatesAutomatically = false

您可能还需要添加以下内容: self.locationManager.requestAlwaysAuthorization()

希望这有帮助,

答案 1 :(得分:-1)

您可以尝试:

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

但这会快速耗尽你的电池!