ios定位权限plist_iOS 定位服务权限问题

本文详细讲解了iOS10以上应用如何添加位置权限、区分系统级与应用级位置服务,并提供方法检查权限状态,以及如何引导用户至设置界面进行权限调整。重点介绍了`CLLocationManager`和相关API的使用,以及注意事项和URL Scheme调用设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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];

}

注意:

1.需要请求一下位置权限或者通知权限,才可以跳进自己的app设置里面,如果没有任何权限请求,就只能跳到系统的设置界面

2.prefs已废弃不可用,所以在此不在过多说明。想更多了解,请点击:http://www.jianshu.com/p/e3b8a4ebc855

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值