Вот сценарий: я добавил сегодняшнюю цель расширения в свое приложение. И в моем виджете ViewController он прослушивает изменения местоположения через платформу Core Location. Кроме того, в моем содержащем приложении есть прослушиватель изменений местоположения. И я знаю, что есть обратный вызов, чтобы получить последнее местоположение.
optional func locationManager(_ manager: CLLocationManager!,
didUpdateLocations locations: [AnyObject]!)
Однако я хочу знать, что когда мое содержащее приложение и виджет работают (звучит странно, если предположить, что содержащее приложение работает в фоновом режиме), и они оба прослушивают изменения местоположения с помощью CLLocationManager, вызывается ли метод locationManager:didUpdateLocations: в то же время и получить те же данные о местоположении или что-то еще? (Я знаю, что виджет и приложение работают в отдельном процессе заранее) Заранее спасибо. :-]
Ответ 1 · Tom Harrington
Нет гарантии, что обновления будут происходить одновременно. Возможно, они произошли в одно и то же время, но это не гарантируется, так что на это нельзя полагаться.
Предполагая, что телефон не перемещается слишком быстро, они, вероятно, получат одно и то же местоположение, но могут быть небольшие различия в том, когда эти обновления доставляются в приложения.
Ответ 2 · рейтинг 1 · sapi
Я согласен с Томом Харрингтоном, что нет никаких гарантий.
На самом деле, я бы, наверное, пошел немного дальше и сказал, что для многих режимов обновления маловероятно, что вы будете получать обновления в одно и то же время и в одном и том же месте.
Например, если вы настроили расширение и приложение на использование разных значений distanceFilter или desiredAccuracy, вполне логично, что они будут получать разные обновления.
Даже если они имеют одинаковые значения для обоих ключей, если они были запущены в разное время и в разных местах, они могут превышать пороговые значения (и, таким образом, получать обновления) в разное время.
Теперь вполне возможно, что iOS оптимизирует ситуацию, отправив обновление обоим процессам одновременно. Но я бы точно не стал на это полагаться.