iOS 设备重启后继续位置更新

Posted

技术标签:

【中文标题】iOS 设备重启后继续位置更新【英文标题】:Continue location updates after iOS device is rebooted 【发布时间】:2014-03-05 00:21:38 【问题描述】:

ios7 中,请求持续位置更新(不是符号更改/区域监控)的应用会在重启后重新启动吗?

当我重新启动手机时,应用程序会暂停,然后终止。当我重新启动手机时,应用程序会一直处于终止状态,直到我手动启动它。

我尝试添加具有最短刷新间隔的后台提取以重新启动应用程序,但也从未调用过。

在apple doc 中解释说,如果我启用重大位置更改,它将从终止状态启动我的应用程序,但没有提及任何关于持续位置更新的内容。

关于如何让我的应用在重新启动后继续接收更新有什么建议吗?

【问题讨论】:

【参考方案1】:

我认为这是不可能的,因为如果您的应用在后台启动,这将毫无用处,因为必须在您的应用处于前台时进行位置更新初始请求的监控。

如果在应用程序处于后台时发出此请求,则它不起作用。您必须以某种方式将您的应用程序置于前台,以便您可以再次开始获取更新的过程。

您可以临时添加重要的位置更改作为实验,以便唤醒您的应用,然后查看您的应用启动到后台状态后是否可以获得位置更新,但我 99% 确定您不会成功。

【讨论】:

【参考方案2】:

我已经测试了好几个月,在应用程序终止/暂停后,iOS 重新启动应用程序以获取新位置更新的唯一可能方法是使用 locationManager 方法 startMonitoringSignificantLocationChanges。如果您使用startUpdatingLocation,iOS 将不会为您重新启动应用程序,因此应用程序无法获取位置更新。

如果您想详细了解在后台获取位置更新与在应用被终止/终止/暂停时获取位置更新之间的区别,请参阅:-

A) 应用在后台获取位置更新,请看:Background Location Services not working in iOS 7

B) 应用暂停/终止时获取位置更新,请参阅:How to Get Location Updates for iOS 7 and 8 Even when the App is Suspended

我写了 2 篇很长的文章来解释这 2 个场景之间的区别。上述 2 个场景的源代码也可以在 GitHub 上找到。

【讨论】:

以上是关于iOS 设备重启后继续位置更新的主要内容,如果未能解决你的问题,请参考以下文章

重启IOS设备后后台进程会发生啥。会被暂停吗?

为啥推送通知ios在重启设备后会起作用?

设备重启后的 IOS8 iBeacon 监控

iOS 13.6 第三个预览版

iOS:设备上的自定义位置

vscode 更新后重启恢复旧版