Я работаю над приложением, которое должно иметь возможность собирать данные о местоположении, пока приложение находится в фоновом режиме.
Чтобы разрешить это, я сделал следующее:
В настройках проекта на вкладке
Capabilities
я поставил галочкуLocation updates
.Я установил ключ
NSLocationAlwaysUsageDescription
в приложенияхInfo.plist
и присвоил соответствующее строковое значение.- I have configured an instance of
CLLocationManager
like so:locationManager.activityType = .Fitness
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.pausesLocationUpdatesAutomatically = false
- Перед началом сбора данных о местоположении я вызываю
locationManager.requestAlwaysAuthorization()
, у меня есть соответствующие обратные вызовы делегатов для обработки любой ошибки. - наконец, я звоню
locationManager.startUpdatingLocation()
При запуске приложения на симуляторе я получаю распечатку обновлений местоположения, и значок приложения также обновляется с количеством собранных местоположений, но при запуске приложений на реальном устройстве после отправки приложения в фоновом режиме приложение вскоре прекращает обработку обновлений местоположения (я знаю это, поскольку значок перестает обновляться).
Мне не хватает какой-то конкретной конфигурации устройства?
allowsBackgroundLocationUpdates
имеет значение false по умолчанию в iOS 9. Надеюсь, это поможет. - person ujell   schedule 09.10.2015