Cllocation Спроси снова для разрешения
-
27-09-2019 - |
Вопрос
В настоящее время мое приложение запрашивает только один раз для разрешения на использование текущего местоположения. Если пользователь не допускает, он еще раз не задаю, если он не сбрасывает предупреждение о местонахождении в общих настройках. Я хотел бы дать пользователю возможность из приложения, чтобы позже предоставить это разрешение. Другими словами, диалоговое окно должно появиться снова, если он нажимает определенную кнопку. Это возможно?
Спасибо за совет.
Решение
Новый ответ: теперь в 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
}
Старый ответ: я не знаю, чтобы заставить родное всплывающее окно появиться (и позволить пользователю перейти на страницу настроек).
Вы можете использовать следующий метод, чтобы определить, позволил ли пользователю разрешено местоположение услуг для вашего приложения: CLLLONTALMANAGER:
+(CLAuthorizationStatus)authorizationStatus
Вы также можете узнать, если услуги местоположения находятся в глобальном уровне на уровне устройства или нет, а также: ClllocationManager:
+(BOOL)locationServicesEnabled
Другие советы
[CLLocationManager locationServicesEnabled]
Просто говорит вам, если на устройстве включены услуги.
согласно с это документ.
[CLLocationManager authorizationStatus]
вернет один из них
typedef enum {
kCLAuthorizationStatusNotDetermined = 0,
kCLAuthorizationStatusRestricted,
kCLAuthorizationStatusDenied,
kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;
Если результат kCLAuthorizationStatusDenied
Вы можете сказать пользователю разрешить использование услуг местоположения, отправив его к настройкам .App