一、判断用户访问相册权限
在iOS应用中如果调用系统相册或相机,需要用户具有相应的权限,才可进行一定的操作。那在应用中如何获取当前相册及相机的权限呢,有如下两种方式:其实两种方式基本一样,只是Apple 更改了API调用方式。
1、iOS 8.0以下系统
首先,导入需要的头文件以及AssetsLibrary框架。
#import <AssetsLibrary/AssetsLibrary.h>
然后即可获取权限
ALAuthorizationStatus author = [ALAssetsLibraryauthorizationStatus];
if (author == kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied){
//无权限
}if … 其他情况依次判断
所有权限状态如下:
typedef enum {
kCLAuthorizationStatusNotDetermined = 0, // 用户尚未做出选择这个应用程序的问候
kCLAuthorizationStatusRestricted, // 此应用程序没有被授权访问的照片数据。可能是家长控制权限
kCLAuthorizationStatusDenied, // 用户已经明确否认了这一照片数据的应用程序访问
kCLAuthorizationStatusAuthorized // 用户已经授权应用访问照片数据
}
2、iOS 8.0以上系统
首先,导入需要的头文件以及Photos框架。
#import <Photos/Photos.h>
然后即可获取权限
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 <AVFoundation/AVCaptureDevice.h>
#import <AVFoundation/AVMediaFormat.h>
然后即可获取权限
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;