ОБЪЕДИНЕНИЕ запросить разрешение
В настоящее время мое приложение запрашивает разрешение на использование текущего местоположения только один раз. Если пользователь не разрешает, он не будет спрашивать снова, пока он не сбросит предупреждение о местоположении в общих настройках. Я хотел бы дать пользователю возможность из приложения предоставить это разрешение позже. Другими словами, диалог должен появиться снова, если он нажмет определенную кнопку. Это возможно?
Спасибо за совет.
2 ответа
Новый ответ: теперь в 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
[CLLocationManager locationServicesEnabled]
просто сообщает вам, включены ли службы определения местоположения на устройстве.
согласно этому документу.
[CLLocationManager authorizationStatus]
вернет один из них
typedef enum {
kCLAuthorizationStatusNotDetermined = 0,
kCLAuthorizationStatusRestricted,
kCLAuthorizationStatusDenied,
kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;
если результат kCLAuthorizationStatusDenied
Вы можете указать пользователю разрешить использование служб определения местоположения, отправив его в settings.app