我正在开发内部分布式iOS应用程序(即没有应用程序商店),我希望能够以10分钟的间隔报告设备的位置。
无论如何,我已将location
作为密钥包含在我的plist中的UIBackgroundModes
字段中,希望这足以让我的应用程序在后台运行,而我每次都会运行一个计时器10分钟。但是,我发现在某些情况下,应用会停止报告这些事件。我怀疑应用程序被移入暂停状态,或许甚至因内存限制而终止。我用仪器来分析我的内存占用情况,并且我已经排除了失控的内存分配作为终止的原因。
如何阻止系统将我的应用程序移至暂停状态?文档说明了位置背景模式:
启用此模式不会阻止系统暂停 应用程序,但它确实告诉系统它应该唤醒应用程序 每当有新的位置数据要传递时
大。因此它可能会被暂停,但新的位置数据将重新唤醒它。但是如果没有新的位置数据怎么办?我可以阻止应用程序被暂停吗?也许使用不同的backgruond模式?
任何帮助都非常感谢!
答案 0 :(得分:0)
您需要两件事来阻止位置管理器暂停,有:
self.locationManager.allowsBackgroundLocationsUpdates = true self.locationManager.pausesLocationUpdatesAutomatically = false
您可能还需要添加以下内容: self.locationManager.requestAlwaysAuthorization()
希望这有帮助,
答案 1 :(得分:-1)
您可以尝试:
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
但这会快速耗尽你的电池!