locationManager:didUpdateLocations:在扩展中同时调用的方法及其包含的应用程序

时间:2014-12-31 03:24:42

标签: swift core-location today-extension

以下是该方案,我已将今天的扩展目标添加到我的应用中。在我的小部件ViewController中,它通过Core Location框架监听位置更改。此外,我的包含app中有位置更改侦听器。我知道有一个回调来获取最新位置。

optional func locationManager(_ manager: CLLocationManager!,
       didUpdateLocations locations: [AnyObject]!)

但是,我想知道的是,当我的包含应用程序和窗口小部件都在运行时(听起来很糟糕,假设包含应用程序在后台运行),并且他们都在使用CLLocationManager监听位置更改,方法是否为locationManager: didUpdateLocations:同时调用并获取相同的位置数据或其他内容?(我知道小部件和应用程序预先在单独的进程中运行) 提前致谢。 : - ]

2 个答案:

答案 0 :(得分:1)

我同意Tom Harrington的说法,不能保证。

事实上,我可能会更进一步说,对于许多更新模式,你不太可能同时获得更新并且位置相同。

例如,如果您将扩展程序和应用程序设置为使用不同的distanceFilterdesiredAccuracy值,那么他们将获得不同的更新是合乎逻辑的。

即使两个键的值相同,如果它们在不同时间和不同位置启动,它们可能会在不同时间超过阈值(从而接收更新)。

现在,iOS可能会通过立即向两个进程发送更新来优化事物。但我当然不会依赖它。

答案 1 :(得分:0)

无法保证更新会同时发生。它们可能恰好在同一时间,但不能保证是真的,所以你不能依赖它。

假设手机没有快速移动 ,他们可能会获得相同的位置,但这些更新何时传递给应用可能会略有不同。