在iOS开发过程中,有时会遇到需要跳转到系统设置页面,让用户来打开权限的需求,今天说一下我在打开系统设置页面中遇到的问题
在我使用下面代码跳转设置页面打开定位信息时,跳转到的设置页面没有定位选项
![](https://img.haomeiwen.com/i5402943/c8e01e15abffaca3.png)
if ( [CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedAlways
&& [CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) {
[self alertMessage:@"请求打开定位权限\n应用需要定位权限以提供地图服务" cancelTitle:@"放弃" confirmTitle:@"设置" confirmBlock:^{
NSURL * url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
};
}];
}
后测试发现只有iOS10至iOS12系统中出现了这个问题,iOS13没有问题,
解决办法!
因为我是在首页使用了百度地图的获取定位方法,所以没有触发iOS系统自身的定位系统,所以需要触发iOS自身的CLLocationManager,当iOS系统的定位权限被触发后,再次使用UIApplicationOpenSettingsURLString跳转,应用内就会出现定位选项
![](https://img.haomeiwen.com/i5402943/3ba12ff1e3a03ad8.jpg)
tips
iOS10 之前是跳转不到设置页面详情页的
网上所说的Prefer URL_TYPE方式会被当做私有方法拒绝上架
网友评论