iOS应用获取相册及相机权限

一、判断用户访问相册权限
在iOS应用中如果调用系统相册或相机,需要用户具有相应的权限,才可进行一定的操作。那在应用中如何获取当前相册及相机的权限呢,有如下两种方式:其实两种方式基本一样,只是Apple 更改了API调用方式。
1、iOS 8.0以下系统
首先,导入需要的头文件以及AssetsLibrary框架。

#import 
然后即可获取权限
     ALAuthorizationStatus author = [ALAssetsLibraryauthorizationStatus];
    if (author == kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied){
        //无权限
    }if  … 其他情况依次判断
     所有权限状态如下:
    typedef enum {
        kCLAuthorizationStatusNotDetermined = 0, // 用户尚未做出选择这个应用程序的问候
        kCLAuthorizationStatusRestricted,        // 此应用程序没有被授权访问的照片数据。可能是家长控制权限
        kCLAuthorizationStatusDenied,            // 用户已经明确否认了这一照片数据的应用程序访问
        kCLAuthorizationStatusAuthorized         // 用户已经授权应用访问照片数据
    }

2、iOS 8.0以上系统
首先,导入需要的头文件以及Photos框架。

#import 
然后即可获取权限
     PHAuthorizationStatus authorStatus = [PHPhotoLibrary authorizationStatus];
     NSLog(@"openGallery_authorStatus == %ld",(long)authorStatus);
     if (authorStatus == PHAuthorizationStatusAuthorized){
     //获取权限
     }if  … 其他情况依次判断
     所有权限状态如下,跟上面一样,只是接口名称不同。
      typedefNS_ENUM(NSInteger, PHAuthorizationStatus) {    
PHAuthorizationStatusNotDetermined = 0, // User has not yet made a choice with regards to this application    
PHAuthorizationStatusRestricted,        // This application is not authorized to access photo data.                                            
// The user cannot change this application’s status, possibly due to active restrictions                                           
 //   such as parental controls being in place.    
PHAuthorizationStatusDenied,            // User has explicitly denied this application access to photos data.    
PHAuthorizationStatusAuthorized         // User has authorized this application to access photos data.
} NS_AVAILABLE_IOS(8_0);

3、iOS10以上系统
首先,需在工程对应的plist文件内添加“Privacy - Photo Library Usage Description”这个key,同时设置其值为“App needs your permission to access the Photo”类似这样的说明。

  //获取相册访问权限
    PHAuthorizationStatus photoStatus = [PHPhotoLibrary authorizationStatus];
    
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
        dispatch_async(dispatch_get_main_queue(), ^{
            switch (status) {
                case PHAuthorizationStatusAuthorized: //已获取权限
                    break;
                
                case PHAuthorizationStatusDenied: //用户已经明确否认了这一照片数据的应用程序访问
                    break;
                
                case PHAuthorizationStatusRestricted://此应用程序没有被授权访问的照片数据。可能是家长控制权限
                    break;
               
                default://其他。。。
                    break;
            }
        });
    }];

二、判断用户访问相机权限
iOS7之前都可以访问相机,iOS7之后访问相机有权限设置
对相机的访问权限获取与相册类似,直接上代码
首先,导入需要的头文件以及AVFoundation框架。

#import 
#import 
然后即可获取权限
     AVAuthorizationStatus status = [AVCaptureDeviceauthorizationStatusForMediaType:AVMediaTypeVideo];
     NSLog(@"openCamera_status == %ld",(longs)status);
    if (authorStatus == AVAuthorizationStatusAuthorized){
    //获取权限

    }if  … 其他情况依次判断
所有权限状态如下,跟上面一样,只是接口名称不同。
typedefNS_ENUM(NSInteger, AVAuthorizationStatus) {
AVAuthorizationStatusNotDetermined = 0,
AVAuthorizationStatusRestricted, 
AVAuthorizationStatusDenied, 
AVAuthorizationStatusAuthorized
} NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; 

你可能感兴趣的:(iOS应用获取相册及相机权限)