Вызывается ли метод locationManager:didUpdateLocations: одновременно в расширении и содержащем его приложении

Вот сценарий: я добавил сегодняшнюю цель расширения в свое приложение. И в моем виджете ViewController он прослушивает изменения местоположения через платформу Core Location. Кроме того, в моем содержащем приложении есть прослушиватель изменений местоположения. И я знаю, что есть обратный вызов, чтобы получить последнее местоположение.

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

Однако я хочу знать, что когда мое содержащее приложение и виджет работают (звучит странно, если предположить, что содержащее приложение работает в фоновом режиме), и они оба прослушивают изменения местоположения с помощью CLLocationManager, вызывается ли метод locationManager:didUpdateLocations: в то же время и получить те же данные о местоположении или что-то еще? (Я знаю, что виджет и приложение работают в отдельном процессе заранее) Заранее спасибо. :-]


person tounaobun    schedule 31.12.2014    source источник


Ответы (2)


Нет гарантии, что обновления будут происходить одновременно. Возможно, они произошли в одно и то же время, но это не гарантируется, так что на это нельзя полагаться.

Предполагая, что телефон не перемещается слишком быстро, они, вероятно, получат одно и то же местоположение, но могут быть небольшие различия в том, когда эти обновления доставляются в приложения.

person Tom Harrington    schedule 04.01.2015

Я согласен с Томом Харрингтоном, что нет никаких гарантий.

На самом деле, я бы, наверное, пошел немного дальше и сказал, что для многих режимов обновления маловероятно, что вы будете получать обновления в одно и то же время и в одном и том же месте.

Например, если вы настроили расширение и приложение на использование разных значений distanceFilter или desiredAccuracy, вполне логично, что они будут получать разные обновления.

Даже если они имеют одинаковые значения для обоих ключей, если они были запущены в разное время и в разных местах, они могут превышать пороговые значения (и, таким образом, получать обновления) в разное время.

Теперь вполне возможно, что iOS оптимизирует ситуацию, отправив обновление обоим процессам одновременно. Но я бы точно не стал на это полагаться.

person sapi    schedule 04.01.2015