使用AVFoundation读取二进制QR码

Mic*_*tes 14 qr-code ios

是否可以使用AVFoundation读取二进制编码的QR码?

我可以获得一个AVMetadataMachineReadableCodeObject对象.type AVMetadataObjectTypeQRCode,但是这只有一个stringValue属性,这将无法工作,因为QR代码中包含的数据无法转换为字符串友好表示.

我应该使用ZXing吗?

谢谢

Ale*_*toc 8

原始数据确实存在于您的数据中AVMetadataMachineReadableCodeObject,但它不能通过公共getter获得.

但是,您可以使用KVO来提取它,但Apple可能会拒绝您的应用.此外,未来的iOS版本可能会更改其私有API,并且您的代码可能会变为无效(因为硬编码的私钥).

迅速:

readableCodeObject.valueForKeyPath("_internal.basicDescriptor")!["BarcodeRawData"]
Run Code Online (Sandbox Code Playgroud)

Objective-C的

[readableCodeObject valueForKeyPath:@"_internal.basicDescriptor"][@"BarcodeRawData"];
Run Code Online (Sandbox Code Playgroud)

我测试了iOS 8和9.

  • 在Swift中你可以使用`readableCodeObject.valueForKeyPath("_ internal.basicDescriptor")!["BarcodeRawData"]作为?NSData`获取存储在`AVMetadataMachineReadableCodeObject`中的NSData. (2认同)