2016-06-01 2 views
2

Я не уверен, что это ошибка или какая-то проблема конфигурации, но (но я помещаю каждый параметр в info.plist, locationManager.allowsBackgroundLocationUpdates = true и любая другая оконечность я нашел в Интернете и по-прежнему существует проблема)местоположение ios (swift) в фоновом режиме (ios 9.3.2) перестает работать

locationManager (менеджер: CLLocationManager, didUpdateLocations местоположение: [CLLocation]) { }

прекращает обновление местоположения после некоторого (случайного) времени, когда в фоновом режиме (приложение закрыто). На iphone 4s ios 8.4 этой проблемы нет.

Возможно, кто-то еще столкнулся с этой проблемой? Благодаря

+1

Можете ли вы показать нам свой код? – Chajmz

+1

Помогли ли вы решить вашу проблему. Я столкнулся с той же проблемой. –

+0

Я тоже. Кажется, что это происходит без причины, просто прекратите отслеживать, если вы зарегистрировали некоторые регионы в фоновом режиме. Кто-нибудь понял это? Это действительно ошибка? С 9.3.1 это никогда не случается со мной ... –

ответ

0

Я решил его перезапуске менеджера местоположения через каждые 3 минуты:

В вашем методе делегата (locationDidUpdateToLocation в моем случае) поставить что-то вроде

 self.timeElapsedSinceLastTrackingUpdate = NSDate().timeIntervalSinceDate(self.lastUpdatedTime) 
    if timeElapsedSinceLastTrackingUpdate > 180 { 
     self.lastUpdatedTime = NSDate()   
     self.LocationMgr.stopUpdatingLocation() 
     UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({})     
     NSTimer.scheduledTimerWithTimeInterval(180, target: self.LocationMgr, selector: #selector(self.LocationMgr.startUpdatingLocation), userInfo: nil, repeats: false) 
    } 

Также убедитесь, что у вас есть оба ключа (NSLocationAlwaysUsageDescription и NSLocationWhenInUseUsageDescription) в вашем Info.plist

<key>NSLocationAlwaysUsageDescription</key> 
    <string>This app needs to use your location</string> 

    <key>NSLocationWhenInUseUsageDescription</key> 
    <string>This app needs to use your location</string> 

И, наконец, не забудьте установить эти переменные на менеджера расположения:

pausesLocationUpdatesAutomatically = false

и

allowsBackgroundLocationUpdates = true 
+0

Я тестировал его на iOS 10, и это не сработало для меня. Через некоторое время (не знаю точно, как долго) он перестает получать местоположение в фоновом режиме. – Mijail

+0

тоже здесь, в моем случае он остановился через 15 минут. Я тестировал iPhone4 Plus и iOS 10.0.1 –

0

Кроме того, вы также можете использовать значительную услугу изменения местоположения, с этой услугой, даже если твой приостановить, КСН разбудит ваше приложение

ищет: startMonitoringSignificantLocationChanges в: https://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/instm/CLLocationManager/stopMonitoringSignificantLocationChanges

0

У меня такая же проблема. как я нашел, чтобы решить эту проблему, это пойти в settings ->privacy ->location services -> найти ваше приложение ->allow location access -> переключатель для never -> вернуться к location services -> затем allow location access переключиться на службу еще раз. но работают только иногда.

также, как я знаю (может быть, я беспокоюсь.), Если точность недостаточно того, что вы установили. обновление местоположения не будет запущено.

 Смежные вопросы

  • Нет связанных вопросов^_^