iOS - 判断应用的定位权限

用到地图定位的时候,会判断定位是否可用来初始化定位服务。 但是以前的方法是判断所有应用的定位服务,无法指定到当前应用是否开启服务。下面的就可以直接搞定这个问题。

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 

};

你可能感兴趣的:(iOS - 判断应用的定位权限)