Как я могу предложить пользователю включить службы определения местоположения после того, как пользователь запретил их использование

У меня есть приложение с явным взаимодействием с пользователем, которое использует текущее местоположение пользователя. Если пользователь отказывает в доступе к службам определения местоположения, я все равно хотел бы, чтобы при последующих действиях пользователю предлагалось перейти к настройкам и повторно включить службы определения местоположения для моего приложения.

Я хочу, чтобы поведение было таким же, как у встроенного приложения Карты:

  1. Сбросить предупреждения о местоположении в разделе «Настройки»> «Основные»> «Сброс»> «Сбросить предупреждения о местоположении».
  2. Запустить приложение «Карты».
  3. Нажмите кнопку «Текущее местоположение» в нижнем левом углу.
  4. Карты запрашивают "" Карты "хотели бы использовать Ваше текущее местоположение »| «Не позволяй» | «Разрешить».
  5. Выберите вариант «Не разрешать».
  6. Снова нажмите кнопку «Текущее местоположение» в нижнем левом углу.
  7. Карты предложат «Включить службы определения местоположения, чтобы« Карты »определяли ваше местоположение» | «Настройки» | «Отмена».

В моем собственном приложении тот же базовый поток приводит к тому, что мой метод CLLocationManagerDelegate -locationManager: didFailWithError: вызывается с ошибкой kCLErrorDenied на последнем этапе, и пользователю не предоставляется возможность открыть приложение «Настройки» для исправь это.

Я мог бы отображать собственное оповещение в ответ на ошибку, но у него не было бы возможности запустить приложение «Настройки», подобное оповещению, которое ОС может предоставить при использовании встроенного приложения «Карты».

Есть ли здесь что-то в классе CLLocationManager, которое мне не хватает, могло бы дать мне такое поведение?

71
задан GBegen 3 February 2011 в 21:29
поделиться