美文网首页
iOS判断相机、麦克风和相册权限

iOS判断相机、麦克风和相册权限

作者: MTSu1e丶 | 来源:发表于2018-07-13 18:25 被阅读150次

    前言

    最近项目中想做一个直播的功能,有个需求是在进入直播页面的时候先看相机和麦克风是否允许打开,也就是是否有权限。

    一、

    在刚装的app打开需要相机和麦克风功能的页面的时候,系统会自动询问是否允许app访问你的相机或者麦克风,这时候我们该如何获取到用户点击了“不允许”还是“好”,这两个按钮里面的哪一个?使用下面方法就可以:

    //判断相机权限
    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
        if (!granted) {//不允许
                
        }else{//开启
        
        }
    }];
    
    //判断麦克风权限
    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
        if (!granted) {//不允许
    
        }else{//开启
                
        }
    }];
    

    二者的区别是那个传入的type值不一样,判断相机权限就用AVMediaTypeVideo,麦克风用AVMediaTypeAudio

    这里两个方法不仅在第一次安装app打开此功能时,能获取到用户选择了允许还是不允许的状态,而且用户在设置->隐私里面设置此app对相机或者麦克风的权限之后,在进入app调用这个方法,还能能获取到用户的选择。

    二、

    1.检测相机的权限:

    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    switch (authStatus) {
        case AVAuthorizationStatusNotDetermined:
        //没有询问是否开启相机
        break;
    
        case AVAuthorizationStatusRestricted:
        //未授权
        break;
    
        case AVAuthorizationStatusDenied:
        //未授权
        break;
    
        case AVAuthorizationStatusAuthorized:
        //授权
        break;
    
        default:
        break;
    }
    

    2.检测麦克风权限

    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
    switch (authStatus) {
        case AVAuthorizationStatusNotDetermined:
        //没有询问是否开启麦克风
        break;
       
        case AVAuthorizationStatusRestricted:
        //未授权
        break;
    
        case AVAuthorizationStatusDenied:
        //未授权
        break;
    
        case AVAuthorizationStatusAuthorized:
        //玩家授权
        break;
    
        default:
        break;
        }
    

    三、

    获取访问系统相册的权限:

    //导入头文件
    #import <Photos/Photos.h>
    
    //获取用户对是否允许访问相册的操作
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
    
    }];
    

    检测相册权限:

    PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
    switch (photoAuthorStatus) {
        case PHAuthorizationStatusAuthorized:
          //用户允许当前应用访问相册
        break;
    
        case PHAuthorizationStatusDenied:
          //用户拒绝当前应用访问相册,我们需要提醒用户打开访问开关
        break;
    
        case PHAuthorizationStatusNotDetermined:
          //用户还没有做出选择
        break;
           
        case PHAuthorizationStatusRestricted:
          //不允许访问
        break;
            
        default:
        break;
    }
    

    相关文章

      网友评论

          本文标题:iOS判断相机、麦克风和相册权限

          本文链接:https://www.haomeiwen.com/subject/iasspftx.html