1. 程式人生 > >iOS開發判斷是否開啟攝像頭許可權

iOS開發判斷是否開啟攝像頭許可權

雖然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設定中新增配置,如下:
這裡寫圖片描述