typedef NS_ENUM(NSInteger, AlbumAuthorizationType) {
AlbumAuthorizationTypeDefault,
AlbumAuthorizationTypeClose,
AlbumAuthorizationTypeAllow
};
typedef NS_ENUM(NSInteger, CameraAuthorizationType) {
CameraAuthorizationTypeDefault,
CameraAuthorizationTypeClose,
CameraAuthorizationTypeAllow
};
#pragma mark 获取相册权限
+ (void)albumAuthorizationWithAuthorization:(void(^)(AlbumAuthorizationType authorization))authorization;
#pragma mark 获取相册权限
+ (void)cameraAuthorizationWithAuthorization:(void(^)(CameraAuthorizationType authorization))authorization;
#pragma mark 访问是否获取了相册权限
+ (void)albumAuthorizationWithAuthorization:(void(^)(AlbumAuthorizationType authorization))authorization {
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status == PHAuthorizationStatusRestricted ||
status == PHAuthorizationStatusDenied) {
authorization(AlbumAuthorizationTypeClose);
} else if (status == PHAuthorizationStatusAuthorized) {
authorization(AlbumAuthorizationTypeAllow);
} else {
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusDenied) {
authorization(AlbumAuthorizationTypeClose);
} else if (status == PHAuthorizationStatusAuthorized) {
authorization(AlbumAuthorizationTypeAllow);
}
}];
}
}
#pragma mark 获取相机权限
+ (void)cameraAuthorizationWithAuthorization:(void(^)(CameraAuthorizationType authorization))authorization {
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (authStatus == AVAuthorizationStatusAuthorized) {
authorization(CameraAuthorizationTypeAllow);
} else if (authStatus == AVAuthorizationStatusDenied) {
authorization(CameraAuthorizationTypeClose);
} else if (authStatus == AVAuthorizationStatusNotDetermined) {
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if (granted) {
authorization(CameraAuthorizationTypeAllow);
} else {
authorization(CameraAuthorizationTypeClose);
}
}];
}
}