didUpdateLocations вызывается только тогда, когда приложение выходит на передний план после запроса местоположения в фоновом режиме - PullRequest
0 голосов
/ 17 мая 2019

У меня приложение для iOS, в котором включен фоновый режим для удаленных уведомлений. Используемый везде экземпляр CLLocationManager авторизуется через requestAlwaysAuthorization.

У меня есть внутренняя логика для запуска приложения при получении тихих push-уведомлений (content-available: 1) от didReceiveRemoteNotification, что дополнительно вызывает requestLocation для объекта CLLocationManager.

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

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

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

  1. Что может быть логическим обоснованием этого? Или это может относиться к какому-либо устройству (ам) или версии (версиям) для iOS?
  2. Каким может быть решение этой проблемы?

1 Ответ

0 голосов
/ 17 мая 2019

Пожалуйста, включите фоновые режимы из возможностей проекта и включите «Обновления местоположения». После включения этого параметра единственная конфигурация, позволяющая получать обновления в фоновом режиме (не в состоянии прерванного состояния), - установить для 'allowsBackgroundLocationUpdates' значение true (что вы уже сделали).

Для получения дополнительной информации о получении местоположения в фоновом режиме следуйте:

https://developer.apple.com/documentation/corelocation/cllocationmanager/1620568-allowsbackgroundlocationupdates

...