iOS后台执行和防止应用被挂起/终止



我正在开发一款内部分发的iOS应用(即没有应用商店),我希望能够每隔10分钟报告一次设备的位置。

无论如何,我已经将location作为我的plist中UIBackgroundModes字段的关键,希望这足以让我的应用程序在后台运行,而我每隔10分钟运行一个计时器。然而,我发现,在某些情况下,应用程序停止报告这些事件。我怀疑应用程序被移动到一个暂停状态,也许然后甚至终止由于内存限制。我已经使用工具来分析我的内存占用,并且我已经排除了内存分配失控作为终止原因的可能性。

如何防止系统将我的应用程序移动到挂起状态?文档中是这样描述位置背景模式的:

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

好了。因此,它可能会暂停,但新的位置数据将重新唤醒它。但是如果没有新的位置数据呢?我可以防止应用程序被暂停吗?也许使用不同的背景模式?

任何帮助都非常感谢!

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

self.locationManager。allowsBackgroundLocationsUpdates = trueself.locationManager.pausesLocationUpdatesAutomatically = false

你可能还需要添加这个:self.locationManager.requestAlwaysAuthorization ()

希望有帮助,

您可以尝试:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

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

最新更新