CLLocation ask again for permission

£可爱£侵袭症+ 提交于 2019-11-30 17:22:37
Matthew Horst

New Answer: Now in iOS 8 you CAN programatically open the device settings app:

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

If you are supporting earlier iOS versions and want to make sure this can be handled, do this:

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

Old Answer: There is no way I know of to force the native popup to appear (and allow the user to jump to the settings page).

You can use the following method to determine if the user has allowed location services for your app: CLLocationManager:

+(CLAuthorizationStatus)authorizationStatus

You can also find out if location services are globally enabled at the device level or not, too: CLLocationManager:

+(BOOL)locationServicesEnabled
Pierre

[CLLocationManager locationServicesEnabled] just tells you if the locations services are enable on the device.

according to this document.

[CLLocationManager authorizationStatus]

will return one of these

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

if the result is kCLAuthorizationStatusDenied your could tell the user to allow the usage of the location services by sending him to the settings.app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!