Лучший способ получить местоположение пользователя в фоновом режиме - это использовать службу определения существенных изменений в соответствии с документацией Apple , чтобы поместить эту функцию в свой класс:
func startReceivingSignificantLocationChanges() {
let authorizationStatus = CLLocationManager.authorizationStatus()
if authorizationStatus != .authorizedAlways {
// User has not authorized access to location information.
return
}
if !CLLocationManager.significantLocationChangeMonitoringAvailable() {
// The service is not available.
return
}
locationManager.delegate = self
locationManager.startMonitoringSignificantLocationChanges()
}
, а также этоfunc:
func locationManager(_ manager: CLLocationManager, didUpdateLocations
locations: [CLLocation]) {
let lastLocation = locations.last!
// Do something with the location.
}
, поэтому вам просто нужно вызвать startReceivingSignificantLocationChanges () внутри вашей кнопки, и он вызовет locationManager (_ manager: CLLocationManager, didUpdateLocations location: [CLLocation]), поэтому делайте то, что вы хотите с этим местоположениемтам.
Не забудьте спросить разрешения на использование местоположения и прекратить отслеживание с помощью locationManager.stopMonitoringSignificantLocationChanges()