Я делаю приложение для мониторинга региона ibeacon с обновлениями местоположения, когда пользователь входит в этот регион (приложение не на переднем плане). Это обновление местоположения должно быть настроено как точность kCLLocationAccuracyBestForNavigation (потому что я должен сделать отслеживание, пока использование остается в регионе,
подписывайтесь на меня существенных изменений не достаточно). Все работает хорошо, но через 20 секунд (иногда 1 минуту или больше) я прекращаю получать обновления местоположений. Я помещаю все ключи в info.plist для постоянного использования местоположения, я включаю фоновые режимы в разделе возможностей и обновления местоположений на фоне.
Я настраиваю locationManager с разными конфигурациями, и всегда SO останавливает обновления моих местоположений. Я использую IOS 12 и Iphone 7 для тестирования.
Способ настройки CLLocationManager:
self.locationManager.desiredAccuracy
=kCLLocationAccuracyBestForNavigation
self.locationManager.activityType = .automotiveNavigation
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.delegate = self
self.locationManager.allowsBackgroundLocationUpdates = true
self.locationManager.pausesLocationUpdatesAutomatically = false
Начать обновление местоположения (когда пользователь входит в регион Ibeacon):
func beaconManager(_ manager: KTKBeaconManager, didEnter region:
KTKBeaconRegion) {
self.locationManager.startUpdatingLocation()
}
И, наконец, в местоположениях didUpdate я вызываю веб-сервис:
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
//Call web service using alamofire
}
Я прошу вашей помощи, чтобы узнать, правильно ли я выполняю настройки для цели, которую я хочу выполнить, и любую подсказку, которая дает мне знать, почему операционная система убивает мой процесс для получения обновлений местоположений