前言
最近项目中想做一个直播的功能,有个需求是在进入直播页面的时候先看相机和麦克风是否允许打开,也就是是否有权限。
一、
在刚装的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;
}
网友评论