void (^allowBlock)() = ^{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
if (iOS8) {
imagePicker.modalPresentationStyle = UIModalPresentationCurrentContext;
}
UIViewController *ctl = [[[UIApplication sharedApplication] windows]lastObject].rootViewController;
[ctl presentViewController:imagePicker animated:YES completion:nil];
};
NSString *mediaType = AVMediaTypeVideo;//读取媒体类型
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//读取设备授权状态
if (authStatus == AVAuthorizationStatusNotDetermined) {
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
dispatch_async(dispatch_get_main_queue(), ^{
if (granted) {
//第一次用户接受
allowBlock();
}else{
//用户拒绝
showAlert(@"已拒绝授权,打开相机失败");
}
});
}];
return;
}
if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
showAlert(@"相机权限受限,请在设置中启用");
return;
}
allowBlock();