У меня есть приложение с явным взаимодействием с пользователем, которое использует текущее местоположение пользователя. Если пользователь отказывает в доступе к службам определения местоположения, я бы по-прежнему хотел, чтобы последующее использование побудило пользователя перейти к настройкам и снова включить службы определения местоположения для моего приложения.
Поведение, которое я хочу, это поведение встроенного приложения Maps:
- Reset предупреждения о местоположении в настройках > Общие > Reset > Reset Предупреждения о местоположении.
- Запустить приложение "Карты".
- Нажмите кнопку "Текущее местоположение" в левом нижнем углу.
- Карты подсказки с "Картами" хотели бы использовать ваше текущее местоположение "|" Не разрешать "|" Разрешить".
- Выберите опцию "Не разрешать".
- Нажмите кнопку "Текущее местоположение" в нижнем левом углу.
- Карты подсказки с "Включить службы определения местоположения, чтобы разрешить" Карты "определять ваше местоположение "|" Настройки "|" Отменить".
В моем собственном приложении один и тот же базовый поток приводит к тому, что мой CLLocationManagerDelegate -locationManager: метод didFailWithError: вызывается с ошибкой kCLErrorDenied на последнем шаге, и пользователю не предоставляется возможность открыть приложение "Настройки" , чтобы исправить его.
Я могу отобразить свое собственное предупреждение в ответ на эту ошибку, но у него не было бы возможности запустить приложение "Настройки" , как предупреждение, которое ОС может предоставить в качестве встроенного приложения "Карты".
Есть ли что-то в классе CLLocationManager, который отсутствует, который мог бы дать мне такое поведение?