关于iOS视频、音频权限检测(GinCamera/GinAVCaptureManager)

本文详细介绍了在iOS应用中如何检查和请求麦克风及摄像头权限,通过具体的代码示例展示了如何使用AVCaptureDevice来获取授权状态,并根据授权状态执行相应的业务逻辑。

先附上DEMO GinCamera


/**
 检查麦克风授权
 */
(BOOL)checkAudioAuthorization
{
    return [self checkAuthorizationStatus:AVMediaTypeAudio];
}


/**
 检测摄像头授权
 */
(BOOL)checkVideoAuthorization
{
    return [self checkAuthorizationStatus:AVMediaTypeVideo];
}

+ (BOOL)checkAuthorizationStatus:(AVMediaType)mediaType
{
    AVAuthorizationStatus authorStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
    if (authorStatus == AVAuthorizationStatusRestricted ||
        authorStatus == AVAuthorizationStatusDenied) {
        return NO;
    }
    return YES;
}
复制代码
/**
 请求设备权限授权

 @param mediaType 设备类型
 @param successBlock 成功回调
 @param failtureBlock 失败回调
 */
- (void)requestCaptureAuthorizationByMediaType:(AVMediaType)mediaType successBlock:(void(^)(void))successBlock failture:(void(^)(void))failtureBlock
{
    //  检测授权
    switch ([AVCaptureDevice authorizationStatusForMediaType:mediaType]) {
        //  已授权,可使用
        //  The client is authorized to access the hardware supporting a media type.
        case AVAuthorizationStatusAuthorized: {
            if (successBlock) {
                successBlock();
            }
            break;
        }
        //  未进行授权选择
        //  Indicates that the user has not yet made a choice regarding whether the client can access the hardware.
        case AVAuthorizationStatusNotDetermined: {
            // 再次请求授权
            [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
                //用户授权成功
                if (granted) {
                    if (successBlock) {
                        successBlock();
                    }
                } else {
                    //用户拒绝授权
                    if (failtureBlock) {
                        failtureBlock();
                    }
                }
            }];
            break;
        }
        //用户拒绝授权/未授权
        default: {
            if (failtureBlock) {
                failtureBlock();
            }
            break;
        }
    }
}
复制代码

转载于:https://juejin.im/post/5c34463cf265da6130750bfd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值