iOS 8相机授权判断

作者: iHTCboy | 来源:发表于2015-07-23 23:04 被阅读6160次

    最近在做自定义相机,然后就是iOS8要授权才能使用,如果用户拒绝,那么,就不能操作。

    问题是,怎么知道用户第一次选择相机,并且应用有打开相机的权限?

    // 在iOS7 时,只有部分地区要求授权才能打开相机
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
            // Pre iOS 8 -- No camera auth required.
                
     }else {
            // iOS 8 后,全部都要授权
            
            // Thanks: http://stackoverflow.com/a/24684021/2611971
            
            AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
            switch (status) {
                case AVAuthorizationStatusNotDetermined:{
                    // 许可对话没有出现,发起授权许可
       
                    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                       
                        if (granted) {
                            //第一次用户接受
                        }else{
                             //用户拒绝
                        }
                    }];
                    break;
                }
                case AVAuthorizationStatusAuthorized:{
                    // 已经开启授权,可继续
                   
                    break;
                }
                case AVAuthorizationStatusDenied:
                case AVAuthorizationStatusRestricted:
                    // 用户明确地拒绝授权,或者相机设备无法访问
                    
                    break;
                default:
                    break;
            }
            
        }
    

    最后一个坑:

    没有解决:
    而问题的关键是,在第一次授权时,弹出的AlertView,其实,应用已经在后台了。当用户选择其中一个时,会从新回到前台,导致第一次时,如果要打开相机,会非常的慢,暂时还不知道这个问题怎么解决?欢迎在讨论区,谢谢大家!

    补充:2015.7.26

    发现其它相机应用,刚打开时,就询问打授权,可能这就是目前比较好的解决方案?

    • 如果有什么疑问,可以在评论区一起讨论;
    • 如果有什么不正确的地方,欢迎指导!

    注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

    相关文章

      网友评论

      • AlvinCrash:感谢楼主分享,打开慢是因为异步问题,不是前后台哦
        dispatch_async(dispatch_get_main_queue(), ^{
        if (granted) {
        //第一次用户接受
        allowBlock();
        }else{
        //用户拒绝
        showAlert(@"已拒绝授权,打开相机失败");
        }
        });
        回到主线程 提示就可以了
        SuperMan_Wang:@AlvinCrash 说的很对啊。
        灰原丶逗:@3e9de7183491 解决了我一个大问题,谢谢大神!
        iHTCboy:@3e9de7183491 明白了,谢谢指点!

      本文标题:iOS 8相机授权判断

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