Лучший способ получить данные о местоположении ядра от Apple Watch Complication?

Каков предписанный метод определения широты и долготы пользователя по осложнению?

Я попытался создать экземпляр диспетчера местоположения внутри контроллера сложности и запросить местоположение, как с помощью requestLocation, так и startUpdatingLocation. Никто не отвечает обновлением.

Я использую watchOS 4.0 и iOS 9.3.

Любая помощь с благодарностью.

2 ответа

Решение

Несколько важных моментов:

  1. Не выполняйте никаких вычислений или асинхронных запросов в контроллере Complication, вы очень быстро съедите свой бюджет на обновление сложности на один день, плюс ОС приостановит процесс через несколько секунд.

  2. Вы можете использовать Базовое Расположение в Вашем Делегате Расширения или на переднем плане (без ограничений) или в фоновом режиме. Если вы хотите использовать его в фоновом режиме, вам нужно установить UIBackgroundModes для местоположения в Info.plist вашего расширения WatchKit И для свойства allowBackgroundLocationUpdates вашего менеджера местоположений установить значение true. Не забудьте установить значение false, если вам не нужны постоянные обновления местоположения. Например, если вам нужно запросить местоположение один раз в фоновом режиме, отключите это свойство после получения исправления местоположения.

  3. Вы можете обновлять свои сложности только столько раз в течение дня (Apple не публикует точное число). Вы можете ожидать, что сможете обновить его по крайней мере 4-6 раз в час, возможно, больше, но определенно не каждую минуту. Таким образом, вы можете забыть об отображении любых данных о вашем осложнении в реальном времени.

Усложнение само по себе является только элементом отображения для пользовательского интерфейса. Любая необходимая обработка должна быть в WKExtensionDelegate с использованием WKRefreshBackgroundTask для обработки. Читайте также о фоновых режимах.

Другие вопросы по тегам