【发布时间】:2022-11-13 07:11:58
【问题描述】:
多年来,我的 iOS 应用程序中有一些条码扫描代码。最近,用户开始抱怨它不适用于 iPhone 13 Pro。
在调查期间,我似乎应该使用内置的三合一相机(如果有的话)。这样做做过为 iPhone 13 Pro 修复它,但随后为 iPhone 12 Pro 破坏它,这似乎与以前的代码一起工作正常。
您应该如何为所有设备选择合适的相机?我觉得很奇怪,Apple 突然让使用这个以前工作的代码变得如此困难。
这是我当前的代码。 “后备”部分是代码多年来使用的部分。
_session = [[AVCaptureSession alloc] init];
// Must use macro camera for barcode scanning on newer devices, otherwise the image is blurry
if (@available(iOS 13.0, *)) {
AVCaptureDeviceDiscoverySession * discoverySession =
[AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInTripleCamera]
mediaType:AVMediaTypeVideo
position:AVCaptureDevicePositionBack];
if (discoverySession.devices.count == 0) {
// no BuiltInTripleCamera
_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
} else {
_device = discoverySession.devices.firstObject;
}
} else {
// Fallback on earlier versions
_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
}
【问题讨论】:
-
我想我也有类似的问题——iPhone 14 Pro 的“最小距离”已经从大约 3 英寸(对于 iPh 6 和 8)和 3.75 英寸(对于 iPh 13 Pro)变成了大约 5.75 英寸。我还没有更改任何代码。
-
希望有人有一个通用的解决方案!
标签: ios objective-c iphone barcode-scanner