用到地图定位的时候,会判断定位是否可用来初始化定位服务。 但是以前的方法是判断所有应用的定位服务,无法指定到当前应用是否开启服务。下面的就可以直接搞定这个问题。
if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)) {
NSLog(@"定位功能可用");
}else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted){
NSLog(@"定位功能不可用,提示用户或忽略");
}
authorizationStatus状态说明:
typedef NS_ENUM(int, CLAuthorizationStatus) {
// 用户从未选择过权限
kCLAuthorizationStatusNotDetermined = 0,
// 无法使用定位服务,该状态用户无法改变
kCLAuthorizationStatusRestricted,
// 用户拒绝该应用使用定位服务,或是定位服务总开关处于关闭状态
kCLAuthorizationStatusDenied,
// 这个值已弃用
kCLAuthorizationStatusAuthorized
// 用户允许该程序无论何时都可以使用地理信息
kCLAuthorizationStatusAuthorizedAlways
// 用户同意程序在可见时使用地理位置
kCLAuthorizationStatusAuthorizedWhenInUse
};
网友评论