首页 > 代码库 > [问题] [AVCaptureMetadataOutput setMetadataObjectTypes:] - unsupported type found.

[问题] [AVCaptureMetadataOutput setMetadataObjectTypes:] - unsupported type found.

Bug 修复时,心情很好,然后找Bug 是一件 XXX 的事, 最近在 QR 扫描的界面在 Crashlytics 上老报错, 详情如下

技术分享

很奇怪,因为自己的设备上跑的很正常啊,后来 PM 把相机的权限给关掉,问题复现了啊,激动啊

对权限没有判断啊,所以添加判断即可


- (void)checkAVAuthorizationStatus
{
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    NSString *tips = NSLocalizedString(@"AVAuthorization", @"您没有权限访问相机");
    if(status == AVAuthorizationStatusAuthorized) {
        // authorized
        [self setupCamera];
    } else {
        [SVProgressHUD showWithStatus:tips];
    }
}

另外 AVCaptureMetadataOutput 还有一个坑,那就是 addOutput:  必须放在addOutput 之前

    if ([_session canAddOutput:output]){
        [_session addOutput:output];
    }
    
    // 条码类型 AVMetadataObjectTypeQRCode

    output.metadataObjectTypes =@[AVMetadataObjectTypeQRCode];
    





[问题] [AVCaptureMetadataOutput setMetadataObjectTypes:] - unsupported type found.