Как отследить местоположение пользователя в фоновом режиме 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
Другие вопросы по тегам