2017-05-10 16:39:25 sinat_28585351 阅读数 4906

虽然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设置中添加配置,如下:
这里写图片描述

2013-12-09 17:04:29 piaodang1234 阅读数 3299

最近项目中用到了摄像头,但是ios7国行需要判断摄像头的权限,结果在谷歌上搜索“ios7摄像头权限”搜索了半天都没有找到,最后还是通过其他途径知道了这个方法,写这篇文章的目的,是方便大家能搜索到,给大家开发带来便利。

 AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
 if(authStatus == AVAuthorizationStatusDenied){
//没有使用权限
}

2015-06-19 11:57:26 u013020103 阅读数 6924

NSString * mediaType = AVMediaTypeVideo;

    AVAuthorizationStatus  authorizationStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];

    if (authorizationStatus == AVAuthorizationStatusRestricted|| authorizationStatus == AVAuthorizationStatusDenied) {

        UIAlertController * alertC = [UIAlertControlleralertControllerWithTitle:@"摄像头访问受限" message:nilpreferredStyle:UIAlertControllerStyleAlert];

        [self presentViewController:alertC animated:YEScompletion:nil];

        UIAlertAction * action = [UIAlertActionactionWithTitle:@"取消" style:UIAlertActionStyleCancelhandler:^(UIAlertAction *action) {

            [self dismissViewControllerAnimated:YEScompletion:nil];

        }];

        [alertC addAction:action];

    }else{

}

2016-05-06 14:53:02 yjw1007020425 阅读数 756

在调用手机摄像头时,需要判用户设备是否开启摄像头权限,以便提示用户,例子请看微信盆友圈的拍照功能

1. 有权限   

 AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.Authorized

2.无权限 

AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.Denied

或者 

AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) ==AVAuthorizationStatus.NotDetermined


2018-04-08 16:39:00 GOOZHere 阅读数 962

二、摄像头权限(iOS7.0后)

首先需要导入框架#import <AVFoundation/AVFoundation.h>,其次在info.plist中添加上NSCameraUsageDescription字段value可自定义。

使用AVCaptureDevice类的类方法authorizationStatusForMediaType:获取当前相机授权状态,其中参数传入AVMediaTypeVideo,返回的值同样是一个枚举

typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
    /// 用户未决定授权
    AVAuthorizationStatusNotDetermined = 0,
    /// 受限制
    AVAuthorizationStatusRestricted    = 1,
    /// 用户拒绝授权
    AVAuthorizationStatusDenied        = 2,
    /// 用户授权使用
    AVAuthorizationStatusAuthorized    = 3,
}

用户未授权时,可以调起AVCaptureDevice类的类方法requestAccessForMediaType:completionHandler:来请求用户授权(即弹出授权框,调用该方法前需保证info.plist中添加了NSCameraUsageDescription字段否则会导致crash),参数传入AVMediaTypeVideo表示相机,completionHanlder中回调授权是否成功,需要注意该block中进行UI操作时需要回到主线程进行。

没有更多推荐了,返回首页