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

2018-07-13  本文已影响150人  MTSu1e丶

前言

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

一、

在刚装的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;
}
上一篇下一篇

猜你喜欢

热点阅读