相册访问权限
NSPhotoLibraryUsageDescription -> 相册
NSCameraUsageDescription -> 相机
有两种方式知道相册的访问权限
- ALAuthorizationStatus
- PHAuthorizationStatus
ALAuthorizationStatus
头文件
#import <AssetsLibrary/AssetsLibrary.h>
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
if (status == ALAuthorizationStatusRestricted || status == ALAuthorizationStatusDenied) { // 无权限
}
typedef NS_ENUM(NSInteger, ALAuthorizationStatus) {
ALAuthorizationStatusNotDetermined // 用户还没有关于这个应用程序做出了选择
ALAuthorizationStatusRestricted // 这个应用程序未被授权访问图片数据。用户不能更改该应用程序的状态,可能是由于活动的限制,如家长控制到位。
ALAuthorizationStatusDenied // 用户已经明确否认了这个应用程序访问图片数据
ALAuthorizationStatusAuthorized // 用户授权此应用程序访问图片数据
}
PHAuthorizationStatus
在8.0系统以后,新加入了Photos.framework框架,我们可以利用框架中的PHAuthorizationStatus进行权限状态判断。
头文件
#import <Photos/PHPhotoLibrary.h>
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied) { // 无权限
}
typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
PHAuthorizationStatusNotDetermined = 0,
PHAuthorizationStatusRestricted,
PHAuthorizationStatusDenied,
PHAuthorizationStatusAuthorized
}
相机权限
头文件
#import <AVFoundation/AVMediaFormat.h>
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied) { // 无权限
}
typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
AVAuthorizationStatusNotDetermined = 0, // 表明用户尚未选择关于客户端是否可以访问硬件
AVAuthorizationStatusRestricted,// 客户端未被授权访问硬件的媒体类型。用户不能改变客户机的状态,可能由于活跃的限制,如家长控制
AVAuthorizationStatusDenied, // 明确拒绝用户访问硬件支持的媒体类型的客户
AVAuthorizationStatusAuthorized// 客户端授权访问硬件支持的媒体类型
}