Как отследить местоположение пользователя в фоновом режиме Swift
Я пытаюсь отследить местоположение пользователя в фоновом режиме, которое я пробую использовать, когда у нас всегда и без него, но каждый раз, когда я минимизирую приложение, значок местоположения исчезает. Я читал в уроке, он должен показывать синюю полосу, но я этого не понимаю Бар у меня также проверить фоновый режим для обновления местоположения
map.showsUserLocation = true
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
// Do any additional setup after loading the view, typically from a nib.
alwaysAuthorization()
}
func alwaysAuthorization(){
if CLLocationManager.locationServicesEnabled() && CLLocationManager.authorizationStatus() == .authorizedWhenInUse {
locationManager.requestAlwaysAuthorization()
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last
let region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude), span: MKCoordinateSpan (latitudeDelta: 0.2, longitudeDelta: 0.2))
self.map.region = region
print("location \(location!.coordinate.latitude) and \(location!.coordinate.longitude)")
}
3 ответа
Это то, что я искал
locationManager.allowsBackgroundLocationUpdates = true
Вы можете использовать метод startMonitoringSignificantLocationChanges() вместо startUpdatingLocation()
На основании документов:
Приложения могут ожидать уведомления, как только устройство переместится на 500 метров или более от предыдущего уведомления. Не следует ожидать уведомлений чаще, чем раз в пять минут. Если устройство способно извлекать данные из сети, менеджер местоположения с гораздо большей вероятностью будет своевременно доставлять уведомления.
Я использовал этот метод один раз и проверил его. Хорошо работает с сотовой связью и Wi-Fi.
Ваш вопрос не ясен. У вас есть проблемы с запуском вашего приложения в фоновом режиме? Или вы просто ожидаете, что синяя полоса указывает на то, что ваше приложение отслеживает местоположение в фоновом режиме?
Для последнего вам нужно включить фоновый индикатор местоположения
locationManager.showsBackgroundLocationIndicator = true