二维码扫描之AVCaptureMetadataOutput setMetadataObjectTypes: unspported type found

前几天做了个二维码扫描功能,因为app支持IOS7以上版本,所以选择了IOS的原生二维码扫描AVFoundation。上线后部分玩家反映点击就崩溃,找到同样的iphone,同样的IOS版本没有任何崩溃的现象,疯了!

后来有个同事居然也反映奔溃,拿来debug半天都没找出问题,只知道设置output.metadataObjectTypes=@[AVMetadataObjectTypeQRCode]的时候崩溃了,后来发现output.availableMetadataObjectTypes为空,却不知为何为空。google了一遍,大家都说要先设置session的output,可我是已经设置了的,所以排除这种可能性。后来磨叽了很久查了很久google,百度都没结果。到下午的时候突然灵光一闪想着这不是相机么,该不会是关了权限吧,打开设置一看,居然真是把权限关了,然后打开权限,再扫描就ok了,没有再闪退。

后来在扫描之前加了判断相机的访问权限,贴上代码:

NSString *mediaType = AVMediaTypeVideo;

        AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];

        if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){

            UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@“XXXX”message:@"请在iPhone设置”-“隐私”-“相机功能中,找到XXXX打开相机访问权限" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil];

            [alert show];

            return;

        }




你可能感兴趣的:(二维码扫描之AVCaptureMetadataOutput setMetadataObjectTypes: unspported type found)