我的应用程序在 iOS 9.3 版本以上的条码扫描中崩溃
My Application get crashed for Barcode Scanning in above iOS 9.3 version
您好,我正在尝试开发用于一维和二维条码扫描的应用程序,它在 iOS 9.3 和 Xcode 7.3 中运行良好,但是当我尝试在 运行 中使用相同的应用程序时iOS 10 和 Xcode 8.2 应用程序在以下行崩溃。
请帮助。
[_session addOutput:_output];
-(void)setupCaptureSession{
_session = [[AVCaptureSession alloc] init];
_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
_input = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&error];
if (_input) {
[_session addInput:_input];
} else {
NSLog(@"Error: %@", error);
}
_output = [[AVCaptureMetadataOutput alloc] init];
[_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[_session addOutput:_output]; // here Application get crashed.
_output.metadataObjectTypes = [_output availableMetadataObjectTypes];
_prevLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session];
_prevLayer.frame = _previewView.bounds;
_prevLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[_previewView.layer addSublayer:_prevLayer];
//[self.view];
//[_session startRunning];
[_previewView bringSubviewToFront:_highlightView];
}
您是否将相机使用说明添加到您的 plist 文件中?如果没有,请查看 this 博客。
iOS 10
使用硬件输入源需要更多隐私。
您的应用可以使用摄像头,您需要提供额外的解释说明为什么它需要摄像头。
因此,转到您的 Info.plist
文件并在那里添加一个额外的 key-value
对字典。
对于密钥选择 - Privacy Camera Usage Description
对于 value 添加一些字符串,如下一个 - App needs a camera to make amazing photos, scan barcodes, etc...
要确定是否一切正常,请转到 Settings
iOS 应用程序并检查是否已为您的应用程序切换到 On
。
你好,我刚刚评论了以下行代码:
[_previewView.layer addSublayer:_prevLayer];
并在我的应用程序中添加了以下行代码并且应用程序正常运行:
[_previewView.layer insertSublayer:_prevLayer atIndex:0];
您好,我正在尝试开发用于一维和二维条码扫描的应用程序,它在 iOS 9.3 和 Xcode 7.3 中运行良好,但是当我尝试在 运行 中使用相同的应用程序时iOS 10 和 Xcode 8.2 应用程序在以下行崩溃。 请帮助。
[_session addOutput:_output];
-(void)setupCaptureSession{
_session = [[AVCaptureSession alloc] init];
_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
_input = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&error];
if (_input) {
[_session addInput:_input];
} else {
NSLog(@"Error: %@", error);
}
_output = [[AVCaptureMetadataOutput alloc] init];
[_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[_session addOutput:_output]; // here Application get crashed.
_output.metadataObjectTypes = [_output availableMetadataObjectTypes];
_prevLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session];
_prevLayer.frame = _previewView.bounds;
_prevLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[_previewView.layer addSublayer:_prevLayer];
//[self.view];
//[_session startRunning];
[_previewView bringSubviewToFront:_highlightView];
}
您是否将相机使用说明添加到您的 plist 文件中?如果没有,请查看 this 博客。
iOS 10
使用硬件输入源需要更多隐私。
您的应用可以使用摄像头,您需要提供额外的解释说明为什么它需要摄像头。
因此,转到您的 Info.plist
文件并在那里添加一个额外的 key-value
对字典。
对于密钥选择 - Privacy Camera Usage Description
对于 value 添加一些字符串,如下一个 - App needs a camera to make amazing photos, scan barcodes, etc...
要确定是否一切正常,请转到 Settings
iOS 应用程序并检查是否已为您的应用程序切换到 On
。
你好,我刚刚评论了以下行代码:
[_previewView.layer addSublayer:_prevLayer];
并在我的应用程序中添加了以下行代码并且应用程序正常运行:
[_previewView.layer insertSublayer:_prevLayer atIndex:0];