Как отследить в фоновом режиме в iOS пользователя, идущего в Apple MapKit или Google Maps Platform для iOS, и рассчитать пройденное расстояние с помощью Swift и Xcode?
Я пытался использовать MapKit. Проблема, которую я получаю, заключается в том, что, когда устройство iOS заблокировано, Базовое местоположение перестает отслеживать устройство. Когда устройство разблокировано и приложение выходит на передний план, Базовое местоположение снова начинает отслеживание и dr aws прямая линия от последней отслеживаемой точки до точки, отслеживаемой, когда приложение выходит на передний план, таким образом пропуская все время, пока устройство заблокировано. Если Google Maps Platform работает лучше для этой цели, я готов ее использовать.
Ниже приведен соответствующий код:
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.allowsBackgroundLocationUpdates = true
if #available(iOS 11.0, *) {
locationManager.showsBackgroundLocationIndicator = true
}
let status = CLLocationManager.authorizationStatus()
if status == .authorizedAlways || status == .authorizedWhenInUse || status == .restricted {
locationManager.startUpdatingLocation()
locationManager.startMonitoringSignificantLocationChanges()
} else {
locationManager.requestAlwaysAuthorization()
}
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if status == .authorizedAlways || status == .authorizedWhenInUse || status == .restricted {
locationManager.startUpdatingLocation()
locationManager.startMonitoringSignificantLocationChanges()
} else {
locationManager.requestAlwaysAuthorization()
}
}