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();