#pragma mark - 判断相册授权
-(BOOL)determinePhotoAuthorizationWithVC:(UIViewController*)VC{
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; //相册访问权限状态
if (status == PHAuthorizationStatusNotDetermined) {//相册访问权限未决定
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus resultStatus) { //请求权限,这句代码过后权限就不会再是未决定,这句代码只会被执行一次
}];
}
if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied) { //权限被拒绝或者不支持相册
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请前往设置->兔展->开启相册权限" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}];
[alert addAction:sureAction];
[VC presentViewController:alert animated:YES completion:nil];
return NO;
}else{
return YES;
}
}
#pragma mark - 判断相机授权和麦克风权限,拍摄视频一般需要同时获取这两个权限
-(BOOL)determineCameraAuthorizationWithVC:(UIViewController*)VC{
/*
typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
AVAuthorizationStatusNotDetermined = 0, 权限未决定
AVAuthorizationStatusRestricted = 1, 暂时无法使用该功能(设备不支持,访问受限制等等特殊情况)
AVAuthorizationStatusDenied = 2, 权限被拒绝
AVAuthorizationStatusAuthorized = 3, 已经授权权限
} NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;
*/
AVAuthorizationStatus cameraStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; //相机权限状态
AVAuthorizationStatus microphoneStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio]; //麦克风权限状态
if (cameraStatus == ALAuthorizationStatusNotDetermined) { //相机权限未决定
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { //相机请求授权,这句代码过后相机权限就不会再是未决定,这句代码只会被执行一次
}];
}
if (microphoneStatus) { //麦克风权限未决定
[[AVAudioSession sharedInstance]requestRecordPermission:^(BOOL granted) {//麦克风请求授权,这句代码过后麦克风权限就不会再是未决定,这句代码只会被执行一次
}];
}
if (cameraStatus == ALAuthorizationStatusDenied) { //相机权限被拒绝
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请前往设置->兔展->开启相机权限" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}];
[alert addAction:sureAction];
[VC presentViewController:alert animated:YES completion:nil];
return NO;
}else if (microphoneStatus == AVAuthorizationStatusDenied){ //麦克风权限被拒绝
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请前往设置->兔展->开启麦克风权限" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}];
[alert addAction:sureAction];
[VC presentViewController:alert animated:YES completion:nil];
return NO;
}else if (cameraStatus == ALAuthorizationStatusRestricted){
NSLog(@"模拟器不能打开相机,请在真机中使用");
return NO;
}else if (microphoneStatus ==AVAuthorizationStatusRestricted ){
NSLog(@"当前设备不支持麦克风");
return NO;
}else if(microphoneStatus == AVAuthorizationStatusAuthorized && cameraStatus == AVAuthorizationStatusAuthorized){
return YES;
}else{
return NO;
}
}