iOS后台执行并防止应用程序被挂起/终止

iOS后台执行并防止应用程序被挂起/终止,ios,core-location,Ios,Core Location,我正在开发一个内部分发的iOS应用程序ie,没有应用程序商店,我希望能够以固定的10分钟间隔报告设备的位置 无论如何,我已经在plist中的UIBackgroundModes字段中将位置作为一个键,希望这足以让我的应用程序在后台保持活动,而我每10分钟运行一次计时器。然而,我发现,在某些情况下,应用程序会停止报告这些事件。我怀疑该应用程序正在进入暂停状态,甚至可能由于内存限制而被终止。我用仪器分析了我的内存占用,我排除了失控的内存分配是导致终止的原因 如何防止系统将我的应用移动到挂起状态?文档中

我正在开发一个内部分发的iOS应用程序ie,没有应用程序商店,我希望能够以固定的10分钟间隔报告设备的位置

无论如何,我已经在plist中的UIBackgroundModes字段中将位置作为一个键,希望这足以让我的应用程序在后台保持活动,而我每10分钟运行一次计时器。然而,我发现,在某些情况下,应用程序会停止报告这些事件。我怀疑该应用程序正在进入暂停状态,甚至可能由于内存限制而被终止。我用仪器分析了我的内存占用,我排除了失控的内存分配是导致终止的原因

如何防止系统将我的应用移动到挂起状态?文档中提到了位置背景模式:

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

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

非常感谢您的帮助

您可以尝试:

[[UIApplication sharedApplication]setIdleTimeDisabled:是]


但是这会很快耗尽你的电池

要防止location manager暂停,需要两件事:

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

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


希望这有帮助,

我想你可以使用音频播放背景模式,在你的应用进入背景后开始播放无声媒体文件。根据协议,这将防止应用程序被挂起。不太适合应用商店提交,但由于您的应用是在内部部署的,因此可能适合您,即使使用很少的内存,也可以终止。随着用户启动越来越多的应用程序,一旦有超过RAM的应用程序,一些应用程序将被终止。有一些方法可以证明你是一个好公民,比如当你被要求释放记忆时,这意味着你会比坏公民活得更长,但最终你会被终止。