#ios #cllocationmanager
Вопрос:
Моему приложению всегда нужна авторизация.
Apple заявляет, что если приложение уже имеет авторизацию «Когда использовать», оно может запросить «Всегда»ровно один раз.
Таким образом, появляется следующий рабочий процесс:
- Попросите «Когда».
- Попросите «Всегда»
Проблемы здесь:
(на 1): Если пользователь выбирает «разрешить один раз», я получаю «Когда использовать» внутренне. Приложению не будет сказано «разрешено только один раз». Шаг 2 завершается беззвучно — без какого-либо обратного вызова или ошибки.
(на 2): Если пользователь выбирает «Хранить только при использовании», обратный вызов вообще не вызывается.
Кто-нибудь знает обходной путь для такого поведения?
(т. е. как мониторинг модально представленных контроллеров представления)
Заранее спасибо!
Ответ №1:
Поскольку приложение становится неактивным всякий раз, когда отображается системное приглашение, вместо ожидания обратных вызовов вы можете сохранить статус авторизации в UserDefaults или в любом другом постоянном хранилище, и всякий раз, когда приложение становится активным, снова проверьте статус и посмотрите, было ли оно изменено.
Комментарии:
1. Извините. Я не могу подтвердить, что это решение работает с использованием SDK iOS 14.5.
2. (Редактирование разрешено только в течение 5 минут, так что вот мое редактирование): Похоже, это не системное приглашение. Я протестировал оба, UIApplicationWillEnterForegroundNotification и UIApplicationDidBecomeActiveNotification. Ничего не работает. Это окно, простой вид или что-то в этом роде.
3. Я также пробовал UIWindowDidResignKeyNotification и UIWindowDidBecomeKeyNotification. Во всплывающем окне, похоже, нет окна. Я почти собираюсь показать клавиатуру и надеюсь, что уведомления с клавиатуры сработают…