在第一次使用相機(jī)前,系統(tǒng)會(huì)彈出提示“是否允許使用相機(jī)”挣轨,如果我們拒絕權(quán)限請(qǐng)求的話,就無(wú)法正常使用相機(jī)瘫里。下面是相機(jī)權(quán)限狀態(tài)的判斷实蔽,以及相關(guān)的引導(dǎo)設(shè)置。
#pragma mark 相機(jī)權(quán)限
- (void)cameraPrivilege
{
NSString *mediaType = AVMediaTypeVideo;
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
if(authStatus ==AVAuthorizationStatusRestricted)
{//用戶還沒(méi)有處理權(quán)限請(qǐng)求
NSLog(@"Restricted");
}
else if(authStatus == AVAuthorizationStatusDenied)
{//用戶已拒絕權(quán)限請(qǐng)求
[self goToSettingCameraPrivilege];
return;
}
else if(authStatus == AVAuthorizationStatusAuthorized)
{//允許權(quán)限請(qǐng)求
}
else if(authStatus == AVAuthorizationStatusNotDetermined)
{
[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
if(granted)
{//用戶點(diǎn)擊允許權(quán)限請(qǐng)求
}
else
{//用戶點(diǎn)擊拒絕權(quán)限請(qǐng)求
[self goToSettingCameraPrivilege];
}
}];
}
else
{
//未知的權(quán)限狀態(tài)
}
}
#pragma mark 提示用戶去系統(tǒng)設(shè)置修改相機(jī)權(quán)限
- (void)goToSettingCameraPrivilege
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"相機(jī)權(quán)限已被禁用谨读,基礎(chǔ)功能暫無(wú)法使用局装,是否去開(kāi)啟?" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *confirm = [UIAlertAction actionWithTitle:@"去開(kāi)啟" style:0 handler:^(UIAlertAction * _Nonnull action) {
NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplication sharedApplication] canOpenURL:settingsURL])
{
[[UIApplication sharedApplication] openURL:settingsURL];
}
}];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"暫不開(kāi)啟" style:1 handler:^(UIAlertAction * _Nonnull action) {
}];
[alertController addAction:confirm];
[alertController addAction:cancel];
[self presentViewController:alertController animated:YES completion:nil];
}];
}