将位置设置从 'Always' 更改为 'when in use' 不会在后台继续进行位置跟踪

Changing Location Settings from 'Always' to 'when in use' doesn't continue location tracking when in background

如果用户更改了他们的位置设置

从“总是”到“使用时”。

并且不会返回到应用程序。 有时我会看到蓝条,有时却看不到。

如果蓝色条没有显示,那么我的应用程序可能会从内存中删除。

我在 didChangeAuthorization 方法中做的唯一一件事是,如果它不是 restricteddenied.notDetermined,那么我调用 startUpdatingLocation()

我知道我无法在后台运行该应用程序 startUpdatingLocation

但是当我从 'Always' 更改为 'when in use' 时,我不应该能够继续吗?!这是我无法控制的行为吗?

经过多轮测试。我可以非常自信地说:

如果您切换到 Never 那么 OS 将调用 stopUpdatingLocation in 10 seconds or less.

因此,如果 之前您达到了切换到 'when in use' 的 10 秒,那么您会看到蓝色条,一切都很好。

如果您等待 10-20 秒,您将不会再看到蓝色条,因为调用了 stopUpdatingLocation。要再次开始跟踪,您 必须 将应用程序置于前台,然后它会再次开始更新您的位置。

在 'Always' 和 'when in use' 之间切换永远不会导致停止您的位置跟踪。发生这种情况的原因可能是我转到 Never 并停留超过 10 秒,然后切换到 Always 然后 'when in use' 我做了所有这些 - 没有打开应用程序并认为这是因为我从 Always 更改为 'when in use'.所以这有点虚惊一场。