iOS 13 Как проверить, что пользователю дается только Всегда разрешать местоположение - PullRequest
1 голос
/ 03 апреля 2020

В моем приложении я хочу проверить, предоставлено ли пользователю разрешение на местоположение "Всегда разрешать". Потому что я делю вид совместного использования местоположения, как, например, общий доступ к местоположению в WhatsApp.

На самом деле это тестовый случай, когда мы меняем статус разрешения местоположения на «во время использования приложения» в настройках приложения и проверяем статус на при нажатии кнопки внутри приложения я получаю значение «authorized Always».

  func isAlwaysPermissionGranted() -> Bool{
    let aStatus = CLLocationManager.authorizationStatus()
    if aStatus == .authorizedAlways {
        return true
    }
     return false
  }

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

Но в WhatsApp, если я изменил разрешение местоположения на «Во время использования приложения» и попытался поделиться своим текущим местоположением, WhatsApp отобразит одно предупреждение об изменении разрешения местоположения в настройках приложения.

Я хочу сделать то же самое.

Пожалуйста, помогите мне изменить уровень кода.

Ответы [ 3 ]

0 голосов
/ 11 апреля 2020

Вы должны запросить явно через CLLocationManager.requestAlwaysAuthorization() ( do c) и прослушать, как указано Документация Apple в обратном вызове делегата

Важно

Использование authorizationStatus () не нужно и не рекомендуется. Вместо этого реализуйте функцию обратного вызова делегата locationManager (_: didChangeAuthorization :) для получения текущего статуса авторизации.

Прослушивание в делегате даст вам возможность всегда быть в курсе любых изменений авторизации во время выполнения статус и сделать соответствующую обработку.

0 голосов
/ 30 апреля 2020

На самом деле я удалил CLLocationManager.requestAlwaysAuthorization() из кода.

Если вы запрашиваете Always Authorization, CLLocationManager.authorizationStatus становится авторизованным всегда.

Я сделал так, как если приложение хочет всегда доступ, пользователь должен go к настройкам и дать разрешение всегда вручную

0 голосов
/ 03 апреля 2020

вы можете проверить это в didChangeAuthorization метод делегата, подобный этому.

switch CLLocationManager.authorizationStatus() {
        case .notDetermined:
            //Ask for permission
            break
        case .restricted:
            // user retricted to use location service.(Ex: parental control)
            break
        case .denied:
            //user denied location service
            break
        case .authorizedAlways:
            //always allow
            break
        case .authorizedWhenInUse:
            // when in use
            break
        @unknown default:
            break
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...