一、权限状态
1、 kCLAuthorizationStatusNotDetermined
当未确定授权状态时,如果应用程序在前台,请求授权会导致位置管理器提示用户请求权限。
2、 kCLAuthorizationStatusRestricted
App没有被授予定位权限,用户无法更改此应用程序的状态,可能是由于存在家长控制等主动限制。
3、 kCLAuthorizationStatusDenied
没有权限的可能性
- 用户授权App为: 永不允许
- 在设置中关闭了定位功能
- 手机为 飞行模式
如果用户在设置中启用了定位服务,状态值改变可以在一下方法中捕捉
locationManager:didChangeAuthorizationStatus:
如果你想知道位置服务在手机设置中是否开启,用以下方法判断
locationServicesEnabled
4、 kCLAuthorizationStatusAuthorized
在 iOS 8中被废弃,等于 kCLAuthorizationStatusAuthorizedAlways
5、 kCLAuthorizationStatusAuthorizedAlways
无论用户是否正在使用App,可以使用所有的位置服务和接收位置事件
6、 kCLAuthorizationStatusAuthorizedWhenInUse
允许你在使用app期间使用所有的位置服务和接收位置事件,如果要使用后台定位,需要开启后台持续定位服务。
二、定位流程思路
1、是否有网,用户是否是飞行模式
2、是否开启定位功能
3、是否用户授权App定位功能
4、如果有权限就开始定位,没有就提示相应内容
5、在权限修改的回调函数中判断,有权限就开始定位
网友评论