美文网首页
iOS 相关权限

iOS 相关权限

作者: XPorter | 来源:发表于2017-10-12 09:16 被阅读0次

    权限分类

    1. 联网权限
    2. 相册权限
    3. 相机、麦克风权限
    4. 定位权限
    5. 推送权限
    6. 通讯录权限
    7. 日历、备忘录权限

    1.联网权限

    1. 引入头文件 @import CoreTelephony;
    2. 应用启动后,检测应用中是否有联网权限
    CTCellularData *cellularData = [[CTCellularData alloc]init];
    cellularData.cellularDataRestrictionDidUpdateNotifier =  ^(CTCellularDataRestrictedState state){
      //获取联网状态
      switch (state) {
            case kCTCellularDataRestricted:
                      NSLog(@"Restricrted");          
                      break;
            case kCTCellularDataNotRestricted:
                      NSLog(@"Not Restricted");          
                      break;
            case kCTCellularDataRestrictedStateUnknown:
                      NSLog(@"Unknown");          
                      break;
            default:
                break;
      };
    };
    
    1. 查询应用是否有联网功能
    CTCellularData *cellularData = [[CTCellularData alloc]init];
    CTCellularDataRestrictedState state = cellularData.restrictedState;
     switch (state) {
       case kCTCellularDataRestricted:
             NSLog(@"Restricrted");      
             break;
       case kCTCellularDataNotRestricted:
             NSLog(@"Not Restricted");      
             break;  
       case kCTCellularDataRestrictedStateUnknown:
             NSLog(@"Unknown");      
             break;
       default:
             break;
    }
    

    2.相册权限--iOS 9.0之前

    1. 导入头文件@import AssetsLibrary;
    2. 检查是否有相册权限
    PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
    switch (photoAuthorStatus) {
      case PHAuthorizationStatusAuthorized:
            NSLog(@"Authorized");      
            break;
      case PHAuthorizationStatusDenied:
            NSLog(@"Denied");      
            break;
      case PHAuthorizationStatusNotDetermined:
            NSLog(@"not Determined");      
            break;  
      case PHAuthorizationStatusRestricted:
            NSLog(@"Restricted");      
            break;  
      default:      
            break;
    }
    
    1. 获取权限
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
      if (status == PHAuthorizationStatusAuthorized) {
            NSLog(@"Authorized");
      }else{
            NSLog(@"Denied or Restricted");
      }
      }];
    

    3.相机和麦克风权限

    1. 导入头文件@import AVFoundation;
    2. 检查是否有相机或麦克风权限
    AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//相机权限
    AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];//麦克风权限
    switch (AVstatus) {
      case AVAuthorizationStatusAuthorized:
            NSLog(@"Authorized");      
            break;  
      case AVAuthorizationStatusDenied:
            NSLog(@"Denied");      
            break;  
      case AVAuthorizationStatusNotDetermined:
            NSLog(@"not Determined");      
            break; 
      case AVAuthorizationStatusRestricted:
            NSLog(@"Restricted");      
            break;  
      default:      
            break;
    }
    
    1. 获取相机或麦克风权限
    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {//相机权限
      if (granted) {
          NSLog(@"Authorized");
      }else{
          NSLog(@"Denied or Restricted");
      }
    }];
    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {//麦克风权限
      if (granted) {
          NSLog(@"Authorized");
      }else{
          NSLog(@"Denied or Restricted");
      }
    }];
    

    4.定位权限

    1. 导入头文件@import CoreLocation;
    2. 由于iOS8.0之后定位方法的改变,需要在info.plist中进行配置;
    3. 检查是否有定位权限
    BOOL isLocation = [CLLocationManager locationServicesEnabled];
    if (!isLocation) {
      NSLog(@"not turn on the location");}
    CLAuthorizationStatus CLstatus = [CLLocationManager authorizationStatus];
    switch (CLstatus) {
      case kCLAuthorizationStatusAuthorizedAlways:
            NSLog(@"Always Authorized");      
            break;
      case kCLAuthorizationStatusAuthorizedWhenInUse:
            NSLog(@"AuthorizedWhenInUse");      
            break;
      case kCLAuthorizationStatusDenied:
            NSLog(@"Denied");      
            break;  
      case kCLAuthorizationStatusNotDetermined:
            NSLog(@"not Determined");      
            break;  
      case kCLAuthorizationStatusRestricted:
            NSLog(@"Restricted");      
            break;  
      default:      
            break;
    }
    
    1. 获取定位权限
    CLLocationManager *manager = [[CLLocationManager alloc] init];
    [manager requestAlwaysAuthorization];//一直获取定位信息
    [manager requestWhenInUseAuthorization];//使用的时候获取定位信息
    

    5.推送权限

    1. 检查是否有通讯权限
    UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];switch (settings.types) {
      case UIUserNotificationTypeNone:
            NSLog(@"None");      
            break;  
      case UIUserNotificationTypeAlert:
            NSLog(@"Alert Notification");      
            break; 
      case UIUserNotificationTypeBadge:
            NSLog(@"Badge Notification");      
            break;  
      case UIUserNotificationTypeSound:
            NSLog(@"sound Notification'");      
            break;  
      default:      
            break;
    }
    
    1. 获取推送权限
    UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:setting];
    

    6.通讯录权限

    1. 导入头文件 @import AddressBook;
    2. 检查是否有通讯录权限
     ABAuthorizationStatus ABstatus = ABAddressBookGetAuthorizationStatus();switch (ABstatus) {
       case kABAuthorizationStatusAuthorized:      
             NSLog(@"Authorized");      
             break;  
       case kABAuthorizationStatusDenied:
             NSLog(@"Denied'");      
             break;  
       case kABAuthorizationStatusNotDetermined:
             NSLog(@"not Determined");      
             break;  
       case kABAuthorizationStatusRestricted:
             NSLog(@"Restricted");      
             break;  
       default:      
             break;
    }
    
    1. 获取通讯录权限
    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
      if (granted) {
            NSLog(@"Authorized");
            CFRelease(addressBook);
      }else{
            NSLog(@"Denied or Restricted");
      }
    });
    

    7.日历、备忘录权限

    1. 检查是否有日历或者备忘录权限
    typedef NS_ENUM(NSUInteger, EKEntityType) {
      EKEntityTypeEvent,//日历
      EKEntityTypeReminder //备忘
     };
    EKAuthorizationStatus EKstatus = [EKEventStore  authorizationStatusForEntityType:EKEntityTypeEvent];switch (EKstatus) {
      case EKAuthorizationStatusAuthorized:
            NSLog(@"Authorized");      
            break;  
      case EKAuthorizationStatusDenied:
            NSLog(@"Denied'");      
            break;  
      case EKAuthorizationStatusNotDetermined:
            NSLog(@"not Determined");      
            break;  
      case EKAuthorizationStatusRestricted:
            NSLog(@"Restricted");      
            break; 
      default:
            break;
    }
    
    1. 获取日历或备忘录权限
    EKEventStore *store = [[EKEventStore alloc]init];
    [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
      if (granted) {
            NSLog(@"Authorized");
      }else{
            NSLog(@"Denied or Restricted");
      }
    }];
    

    相关文章

      网友评论

          本文标题:iOS 相关权限

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