Ошибка iOS 13 Процесс авторизации местоположения? - PullRequest
0 голосов
/ 06 августа 2020

Я столкнулся с неожиданным поведением в процессе авторизации iOS местоположения. Вот мои шаги, включая захват экрана

  • Я запрашиваю авторизацию «Всегда» на iOS 13.
  • Я даю приложению только авторизацию «Разрешить один раз», которая дает пользователь получает временную авторизацию «При использовании».
  • Я снова запрашиваю авторизацию «Всегда».
  • На этот раз запрос авторизации не отображается, а метод делегата didChangeAuthorization дает .authorizedAlways
  • Однако, когда я смотрю на статус авторизации в приложении «Настройки», он говорит «Спросить в следующий раз», что соответствует статусу авторизации .notDetermined.

Мои вопросы :

  1. Почему нет второго приглашения, когда я запрашиваю авторизацию «Всегда» во второй раз?
  2. Почему метод делегата выдает статус .authorizedAlways без моего фактического разрешения?
  3. Почему приложение «Настройки» указывает, что статус авторизации равен .notDetermined, когда метод делегата сказал, что это было .authorizedAlways.

Мне кажется, это ошибка в iOS, но Возможно, я просто неправильно понимаю, как должны работать потоки авторизации. Как вы думаете?

Мне не удалось проверить это на реальном устройстве с iOS13, поэтому я не знаю, может быть, это проблема только в симуляторе?

введите описание изображения здесь

Ответы [ 2 ]

3 голосов
/ 07 августа 2020
  1. Почему нет второго запроса, когда я запрашиваю авторизацию «Всегда» во второй раз?

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

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

В WWD C 2020 видео Что нового в локации , они описывают изменение, внесенное в iOS 13.4. Вы можете запросить «когда используется» и, предполагая, что пользователь предоставил его, вы можете запросить «всегда» и получить второе предупреждение (на этот раз с вопросом, хочет ли пользователь перейти на «всегда» или нет). Вам просто нужны строки использования «Конфиденциальность - Местоположение при использовании Описание использования» и «Конфиденциальность - Местоположение всегда и когда используется Описание использования».

3 голосов
/ 07 августа 2020
  1. Пользователь уже запрашивал разрешение на местоположение в этом сеансе; они выбрали «разрешить один раз». Если iOS предложит им второй раз, это будет раздражать и сбивать с толку.
  2. Ваше приложение будет обновлено до состояния «всегда временное» после второго запроса; можно думать, что так было всегда, так что любой лог c проверки разрешений, который вы, возможно, создали, не будет постоянно просить пользователя go к настройкам или чему-то еще. Поскольку приложение на самом деле не всегда, это не влияет на конфиденциальность пользователя, поэтому нет никакого вреда в сообщении «всегда»
  3. Приложение настроек отражает фактический выбор пользователя, который является «спросить меня еще раз в следующий раз» .

WWD C video , которое @Don предложил в комментариях, объясняет о временном разрешении всегда и его цели в удовлетворении разрешений приложений logi c.

...