iOS开发判断是否开启摄像头权限

1,036 阅读1分钟

虽然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已经废弃了之前的方法

作为一个ios开发者,遇到问题的时候,有一个学习的氛围跟一个交流圈子特别重要对自身有很大帮助,众人拾柴火焰高 这是一个我的iOS交流群:711315161,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。

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设置中添加配置,如下:


作者:Raymon-lau 链接:原文