iOS Swift Фоновый мониторинг местоположения - PullRequest
0 голосов
/ 06 сентября 2018

Я пишу приложение с поддержкой фоновой локации. Приложению необходимо отслеживать точки расположения пользователей, когда они проезжают через города по маршрутам доставки.

Я использую startUpdatingLocation () из CLLocationManager, и все работает нормально, пока приложение не находится в фоновом режиме около 15 минут.

Затем приложение завершает работу и отслеживание завершается.

Я знаю, что это непрерывное отслеживание (т. Е. MapMyRun) должно работать, но я не знаю, как это сделать.

Редактировать: LocationManager настроен следующим образом

self.locationManager?.desiredAccuracy = kCLLocationAccuracyBestForNavigation
self.locationManager?.distanceFilter = kCLDistanceFilterNone
self.locationManager?.allowsBackgroundLocationUpdates = true
self.locationManager?.pausesLocationUpdatesAutomatically = false
self.locationManager?.activityType = CLActivityType.automotiveNavigation
self.locationManager?.showsBackgroundLocationIndicator = true

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Местоположение обновляется вашим приложением, когда в фоновом режиме полностью обрабатывается iOS и не контролируется вашими приложениями.

Согласно документации Apple, касающейся фоновых услуг определения местоположения:

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

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

0 голосов
/ 06 сентября 2018

Чтобы обновления местоположения работали в фоновом режиме, необходимо включить функцию фонового режима для вашего приложения.

Если вы этого не сделаете, приложение завершит работу в фоновом режиме через X раз, когда ОС сочтет нужным.

Для этого нажмите на цель, перейдите на вкладку «Возможности», включите фоновые режимы и отметьте обновления местоположения. Смотрите скриншот для более подробной информации

BG Modes

Попробуйте, и если он все еще не работает, я предлагаю вам загрузить код вашего менеджера местоположений, чтобы посмотреть.

Надеюсь, это поможет!

0 голосов
/ 06 сентября 2018

Выезд

CLLocationManager.startMonitoringSignificantLocationChanges()

Документация Apple здесь

...