iOS開發判斷是否開啟攝像頭許可權
阿新 • • 發佈:2019-02-15
雖然iOS10添加了隱私許可權提示,但是當我們拒絕開啟許可權後,再次呼叫就會出現崩潰問題,為了避免這個問題,我們可以在呼叫裝置前判斷是否開啟了呼叫許可權
- (void)judgeCameraLimits{
/// 先判斷攝像頭硬體是否好用
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
// 使用者是否允許攝像頭使用
NSString * mediaType = AVMediaTypeVideo;
AVAuthorizationStatus authorizationStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
// 不允許彈出提示框
if (authorizationStatus == AVAuthorizationStatusRestricted|| authorizationStatus == AVAuthorizationStatusDenied) {
[RMUtils alertWithTitle:@"" message:@"攝像頭訪問受限,前往設定" delegate:self tag:10 cancelButtonTitle:@"取消" otherButtonTitles:@"設定"];
}else{
// 這裡是攝像頭可以使用的處理邏輯
}
} else {
// 硬體問題提示
[RMUtils showAlertControllerWithMessage:@"請檢查手機攝像頭裝置" onViewController:self];
}
}
當點選去設定時需要判斷當前手機系統的版本,iOS10已經廢棄了之前的方法
if (buttonIndex == 1) {
if ([RMUserInfo shareInstance].iosType == ios10) {
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]] ;
}else{
NSURL*url = [NSURL URLWithString:@"prefs:root=About"];
if ([[UIApplication sharedApplication] canOpenURL:url]){
[[UIApplication sharedApplication] openURL:url];
}
}
}
如果是iOS10以下,還要在info設定中新增配置,如下: