Определение, отказал ли пользователь в разрешении CoreLocation - PullRequest
7 голосов
/ 29 декабря 2011

Можно ли программно определить, что пользователь отказал в разрешении на использование своего местоположения?

Во-вторых, если пользователь отказал в разрешении, можно ли повторно запросить пользователя?

Ответы [ 2 ]

14 голосов
/ 29 декабря 2011

Вы можете определить свой статус авторизации, используя authorizationStatus метод класса на CLLocationManager. Это возвращает CLAuthorizationStatus, который определяется как:

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

Система предложит пользователю авторизовать ваше приложение, если статус авторизации не определен при попытке запустить диспетчер местоположения.

Кроме того, вы можете проверить метод класса locationServicesEnabled, чтобы определить, разрешено ли расположение всей системы.

3 голосов
/ 29 декабря 2011

Дополнительно - если locationServicesEnabled возвращает NO и вы все равно пытаетесь запустить службы определения местоположения, система предложит пользователю подтвердить, следует ли включить службы определения местоположения.

...