CLLocationManager locationManager.requestAlwaysAuthorization() оставляет его в ожидании... нет ответа на методы делегироIOS

Программируем под IOS
Ответить
Anonymous
 CLLocationManager locationManager.requestAlwaysAuthorization() оставляет его в ожидании... нет ответа на методы делегиро

Сообщение Anonymous »

У меня возникла проблема с locationManager.requestAlwaysAuthorization(). Бывают случаи, когда обратный вызов не происходит при асинхронном выполнении этого запроса, и это допустимые сценарии.
Справочная информация: это приложение для геозон.
  • Пользовательский интерфейс ранее запрашивал разрешение на использование. Мы не будем запрашивать «всегда», пока пользователь не разрешит местоположение при использовании.
  • Интерфейс предлагает пользователю выбрать, будет ли местоположение запуска приложения в фоновом режиме, чтобы наш вариант использования геозоны работал
  • Появляется приглашение с надписью «Сохранить только во время использования» / «Изменить на Всегда» Позволять". Пользователь случайно выбирает «Сохранить при использовании».
  • Асинхронный вызов «locationManager.requestAlwaysAuthorization()» вообще никогда не отвечает ни на один метод делегата, ChangeAuthorization особо не делал. Даже с надписью «Пользователь отклонил»
От Apple:
Сохранять только во время использования: базовое расположение оставляет авторизацию как «При использовании». Делегат не получает никаких обновлений.

По сути, он ничего не делает, но не сообщает вам.
Для ясности: у нас есть все правильные настройки в pininfo и используется сильная ссылка на CLLocationManager. Процесс работает нормально, если пользователь не совершает ошибку и не меняет свое мнение.
Не нарушает ли это какое-то правило дизайна? То есть, если вы принудительно выполняете асинхронный вызов, вы всегда должны предоставлять обратный вызов, чтобы разработчик мог с этим справиться.
Конечный эффект для нашего пользовательского интерфейса в настоящее время заключается в том, что наш маленький значок загрузки сидит там до тех пор, пока не истечет время ожидания, и пользователю ничего не будет сказано. Они даже не подозревают, что допустили ошибку.
И что еще хуже, мы никогда не сможем исправить эту позицию изнутри приложения:
От Apple:
Core Location ограничивает вызовы requestAlwaysAuthorization(). После того, как ваше приложение вызовет этот метод, дальнейшие вызовы не будут иметь никакого эффекта. Если совместимое приложение для iPad или iPhone вызывает этот метод при работе в VisionOS, метод вместо этого обрабатывает его как запрос авторизации при использовании.

Как это происходит? другие имеют дело с этим сценарием?
Я бы ожидал чего-то обратного от асинхронного метода locationManager.requestAlwaysAuthorization() при взаимодействии пользователя.
Я бы также ожидайте способа исправить этот сценарий, не направляя пользователя в раздел настроек, чтобы ему приходилось вручную что-то выкапывать. Наши целевые пользователи этого приложения не обязательно разбираются в технологиях. Но главная проблема в том, что я ожидал бы найти способ определить, в каком состоянии мы находимся!?

Подробнее здесь: https://stackoverflow.com/questions/786 ... it-waiting
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»