2016-05-18 3 views
1

Я пишу (в Swift) приложение iOS 9, которому нужны обновления местоположения, в том числе в фоновом режиме. Проблема в том, что я только получаю обновления местоположения на переднем плане. Я думаю, что все сделано правильно:Приложение ios 9, не сообщающее местоположение в фоновом режиме

В info.plist:

  • указано значение для NSLocationAlwaysUsageDescription.

  • Указывает значение для NSLocationUsageDescription.

  • Указывает значение NSLocationWhenInUseUsageDescription.

  • Включено «местоположение» в UIBackgroundModes.

  • Включено "GPS" и "местоположение-услуги" в UIRequiredDeviceCapabilities

  • Started менеджер местоположения следующим образом:

    let locationManager = CLLocationManager() 
    locationManager.desiredAccuracy = 
        kCLLocationAccuracyHundredMeters 
    locationManager.distanceFilter = 250.0 
    locationManager.allowsBackgroundLocationUpdates = true 
    locationManager.startUpdatingLocation() 
    
  • Я также проверил, что locationManager.pausesLocationUpdatesAutomatically является ложным.

я получаю не геоданных в то время как приложение не на переднем плане. Единственный раз, когда я получаю обновления местоположения, - это если я приношу приложение на передний план, и даже тогда, не все время.

Любая идея, что происходит не так? Или мои ожидания неверны?

+0

Я видел, как вы установили фильтр расстояния до 250. Попробовали ли вы меньшее значение/Прошли ли вы достаточно далеко? – Raptor

+0

Точность местоположения kCLLocationAccuracyHundredMeters не будет использовать GPS, поэтому вам, вероятно, нужно будет перемещаться на достаточное расстояние, чтобы получать какие-либо обновления; возможно, порядка 500-600 м. Где вы назначаете своего менеджера местоположений? Является ли это свойством AppDelegate? Если вам не нужны быстрые обновления или точное местоположение, вам может быть выгоднее использовать значительный мониторинг изменений местоположения. – Paulw11

+0

Я не вижу абсолютно никаких обновлений местоположения, даже после вождения 10-30 миль. Обновления происходят только тогда, когда я приношу приложение на передний план. –

ответ

0

Как вы отправляете приложение на задний план? Если вы нажмете, чтобы убить, ваше приложение не будет автоматически перезагружаться для получения событий местоположения. Я не вижу его в вашем коде, вы вызвали requestAlwaysAuthorization? Возможно, вы также захотите реализовать LocationManager: didFailWithError, чтобы убедиться, что это дает вам какие-либо идеи.