Подтвердить что ты не робот

CLLocation снова запрашивает разрешение

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

Спасибо за ваш совет.

4b9b3361

Ответ 1

Новый ответ: Теперь в iOS 8 вы можете программно открыть приложение настроек устройства:

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];

Если вы поддерживаете более ранние версии iOS и хотите убедиться, что это можно обработать, сделайте следующее:

if (&UIApplicationOpenSettingsURLString != NULL) {
   NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
   [[UIApplication sharedApplication] openURL:url];
}
else {
  //Earlier iOS version
}

Старый ответ: Я не знаю, как заставить всплывающее окно появиться (и позволить пользователю перейти на страницу настроек).

Вы можете использовать следующий метод, чтобы определить, разрешил ли пользователь услуги определения местоположения для вашего приложения: CLLocationManager:

+(CLAuthorizationStatus)authorizationStatus

Вы также можете узнать, включены ли службы определения местоположения на уровне устройства на уровне устройства или нет: CLLocationManager:

+(BOOL)locationServicesEnabled

Ответ 2

[CLLocationManager locationServicesEnabled] просто сообщает вам, включены ли службы местоположений на устройстве.

согласно этот документ.

[CLLocationManager authorizationStatus]

вернет один из этих

typedef enum {
   kCLAuthorizationStatusNotDetermined = 0,
   kCLAuthorizationStatusRestricted,
   kCLAuthorizationStatusDenied,
   kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;

если результат kCLAuthorizationStatusDenied, вы можете сказать пользователю разрешить использование служб определения местоположения, отправив его в settings.app