Проблемы с расположением «Разрешить всегда» в iOS 13 - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть приложение, которое зависит от местоположения пользователя.До iOS 13 приложение работало корректно, но теперь оно не отправляет местоположение пользователя.

Я пытался выбрать опцию «Во время использования приложения» и дождаться следующего приглашения, чтобы выбрать «Разрешить всегда»но это не работаетВыбор «При использовании приложения» и переход к настройкам для изменения параметра «Разрешить всегда» не работает.(Оба случая являются «официальным» ответом Apple в документации)

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 26 сентября 2019

Начиная с iOS 13, Apple заменяет «Всегда разрешать» на «Всегда один раз» на экране разрешений и перемещает «Всегда разрешать» в настройках.

Если пользователь выбирает «Всегда один раз», приложение будет запрашивать местоположениеэкран разрешений каждый раз, когда пользователь запускает приложение.

Если пользователь выбирает «В процессе использования», приложение не будет запрашивать экран разрешений в следующий раз, когда пользователю явно потребуется перейти к настройкам и дать разрешение.

Также у меня работает обновление местоположения от переключения с «При использовании приложения» на «Всегда разрешать» из настроек.

Вот свойства, которые я указываю

let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self

.
.
.

extension AppDelegate: CLLocationManagerDelegate {

    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        switch status {
        case .authorizedAlways, .authorizedWhenInUse:
            locationManager.startUpdatingLocation()

        case .denied:
            print("Location permission denied")

        case .restricted:
            print("Location permission restricted")

        case .notDetermined:
            print("Location permission notDetermined")

        @unknown default:
            fatalError()
        }
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        print("Location Update = \(String(describing: locations.first))")
    }

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print("Location Error = \(error.localizedDescription)")
    }
}

...