Лучший способ получить данные о местоположении ядра от Apple Watch Complication?
Каков предписанный метод определения широты и долготы пользователя по осложнению?
Я попытался создать экземпляр диспетчера местоположения внутри контроллера сложности и запросить местоположение, как с помощью requestLocation, так и startUpdatingLocation. Никто не отвечает обновлением.
Я использую watchOS 4.0 и iOS 9.3.
Любая помощь с благодарностью.
2 ответа
Несколько важных моментов:
Не выполняйте никаких вычислений или асинхронных запросов в контроллере Complication, вы очень быстро съедите свой бюджет на обновление сложности на один день, плюс ОС приостановит процесс через несколько секунд.
Вы можете использовать Базовое Расположение в Вашем Делегате Расширения или на переднем плане (без ограничений) или в фоновом режиме. Если вы хотите использовать его в фоновом режиме, вам нужно установить UIBackgroundModes для местоположения в Info.plist вашего расширения WatchKit И для свойства allowBackgroundLocationUpdates вашего менеджера местоположений установить значение true. Не забудьте установить значение false, если вам не нужны постоянные обновления местоположения. Например, если вам нужно запросить местоположение один раз в фоновом режиме, отключите это свойство после получения исправления местоположения.
Вы можете обновлять свои сложности только столько раз в течение дня (Apple не публикует точное число). Вы можете ожидать, что сможете обновить его по крайней мере 4-6 раз в час, возможно, больше, но определенно не каждую минуту. Таким образом, вы можете забыть об отображении любых данных о вашем осложнении в реальном времени.
Усложнение само по себе является только элементом отображения для пользовательского интерфейса. Любая необходимая обработка должна быть в WKExtensionDelegate с использованием WKRefreshBackgroundTask для обработки. Читайте также о фоновых режимах.