美文网首页
iOS 定位服务权限问题

iOS 定位服务权限问题

作者: 孙明辉 | 来源:发表于2017-09-14 15:19 被阅读0次

iOS10以上app需要定位服务,请先在infoplist中添加位置权限

[Privacy - Location When In Use Usage Description]string 此app需要访问位置
[Privacy - Location Always Usage Description]string 此app需要访问位置

1.系统级开关状态,及跳转设置

[CLLocationManager locationServicesEnabled]
此方法是获取到用户是否打开了系统的位置服务,但是因为现在苹果的安全机制,我们无法执行代码跳转到系统的位置开关界面,所以,如果位置服务不可用的情况下,我们不需要做任何操作,只需要操作位置权限问题即可。
注意:一定要区分位置服务和位置权限,位置服务是系统设置中位置的总开关,位置权限,只是代表是否可以获取到某一个应用的位置

2.应用级开关状态,及跳转设置

此方法是获取到此app的位置权限状态,位置权限为枚举:
CLAuthorizationStatus locationStatus = [CLLocationManager authorizationStatus]

[kCLAuthorizationStatusNotDetermined]
用户没有决定是否使用定位服务。
[kCLAuthorizationStatusRestricted]
定位服务授权状态是受限制的。可能是由于活动限制定位服务,用户不能改变。这个状态可能不是用户拒绝的定位服务
[kCLAuthorizationStatusDenied]
定位服务授权状态已经被用户明确禁止,或者在设置里的定位服务中关闭
[kCLAuthorizationStatusAuthorizedAlways]
定位服务授权状态已经被用户允许在任何状态下获取位置信息。包括监测区域、访问区域、或者在有显著的位置变化的时候
[kCLAuthorizationStatusAuthorizedWhenInUse]
定位服务授权状态仅被允许在使用应用程序的时候
[kCLAuthorizationStatusAuthorized]
这个枚举值已经被废弃了。他相当于[kCLAuthorizationStatusAuthorizedAlways]这个值只要是经过授权,跳转设置界面,就可以直接进入定位设置界面

//跳转到app的位置权限设置界面
NSURL*url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
        if([[UIApplication sharedApplication] canOpenURL:url]) {
            [[UIApplication sharedApplication] openURL:url];
        }

具体代码请移步:http://www.jianshu.com/p/3b5ffbef603c

注意:
1.需要请求一下位置权限或者通知权限,才可以跳进自己的app设置里面,如果没有任何权限请求,就只能跳到系统的设置界面
2.prefs已废弃不可用,所以在此不在过多说明。想更多了解,请点击:http://www.jianshu.com/p/e3b8a4ebc855

本文中位置授权状态部分,参考:http://blog.csdn.net/crazyzhang1990/article/details/50492227

相关文章

网友评论

      本文标题:iOS 定位服务权限问题

      本文链接:https://www.haomeiwen.com/subject/mzjdsxtx.html