以下是该方案,我已将今天的扩展目标添加到我的应用中。在我的小部件ViewController中,它通过Core Location框架监听位置更改。此外,我的包含app中有位置更改侦听器。我知道有一个回调来获取最新位置。
optional func locationManager(_ manager: CLLocationManager!,
didUpdateLocations locations: [AnyObject]!)
但是,我想知道的是,当我的包含应用程序和窗口小部件都在运行时(听起来很糟糕,假设包含应用程序在后台运行),并且他们都在使用CLLocationManager监听位置更改,方法是否为locationManager: didUpdateLocations:同时调用并获取相同的位置数据或其他内容?(我知道小部件和应用程序预先在单独的进程中运行) 提前致谢。 : - ]
答案 0 :(得分:1)
我同意Tom Harrington的说法,不能保证。
事实上,我可能会更进一步说,对于许多更新模式,你不太可能同时获得更新并且位置相同。
例如,如果您将扩展程序和应用程序设置为使用不同的distanceFilter
或desiredAccuracy
值,那么他们将获得不同的更新是合乎逻辑的。
即使两个键的值相同,如果它们在不同时间和不同位置启动,它们可能会在不同时间超过阈值(从而接收更新)。
现在,iOS可能会通过立即向两个进程发送更新来优化事物。但我当然不会依赖它。
答案 1 :(得分:0)
无法保证更新会同时发生。它们可能恰好在同一时间,但不能保证是真的,所以你不能依赖它。
假设手机没有快速移动 ,他们可能会获得相同的位置,但这些更新何时传递给应用可能会略有不同。