Я разрабатываю приложение iOS, которое использует местоположение пользователей и сохраняет их пути. У меня все работает, кроме как после того, как я попрошу разрешения пользователей использовать их местоположение при использовании приложения и когда включены обновления фона, я не могу вообще прекратить обновления местоположения, если я не заставлю выйти из приложения.Динамически изменять обновления фона фона в Swift
Что я хотел бы достичь, когда пользователь сначала запускает приложение, я получаю их местоположение и меняю положение камеры. Затем, если пользователь нажимает кнопку «Пуск», фоновые обновления фона активируются, однако, если они помещают приложение в фоновый режим, не нажимая на начальное местоположение, обновления не отслеживаются.
Я печатаю как начало, так и конец, но мне все равно нужно закрыть приложение, чтобы остановить обновления местоположения.
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.pausesLocationUpdatesAutomatically = true
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
locationManager.distanceFilter = 0;
locationManager.requestWhenInUseAuthorization()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedWhenInUse {
locationManager.startUpdatingLocation()
viewMap.myLocationEnabled = true
viewMap.settings.myLocationButton = true
println("Location updated and started")
}
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
if let location = locations.first as? CLLocation {
viewMap.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 60)
locationManager.stopUpdatingLocation()
println("Location updated and stopped")
}
}
Спасибо :)
Спасибо, но не уверен, что это работает. Если я регистрируюсь для обновлений фона, независимо от того, начал ли я или остановил обновления местоположения, я все равно получаю синюю полосу в верхней части приложения, когда приложение находится в фоновом режиме. – puks1978
В дополнение к предыдущему ответу может возникнуть проблема, заключающаяся в том, что вы не используете один и тот же диспетчер locationManager, стараясь сделать его статическим и вызывать то же самое как в делетете приложения, так и в вашем классе карты. –