iOS10 相册图片二维码识别
#1、问题描述:
在iOS8,iOS9下,打开相册里的图片识别二维码功能正常,但在iOS10下,该功能失效。
打开相册代码:
- (void)openImagePicker { UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary; if (![UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) { sourceType = UIImagePickerControllerSourceTypePhotoLibrary; } UIImagePickerController *pickerVC = [[UIImagePickerController alloc] init]; pickerVC.delegate = self; pickerVC.allowsEditing = NO; pickerVC.sourceType = sourceType; [self presentViewController:pickerVC animated:YES completion:nil]; }
识别二维码:
+ (NSString *)readQRCodeImage:(UIImage *)imagePicked { CIImage *qrcodeImage = [CIImage imageWithCGImage:imagePicked.CGImage]; CIContext *qrcodeContext = [CIContext contextWithOptions:nil]; //检测图片中的二维码,并设置检测精度为高 CIDetector *qrcodeDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:qrcodeContext options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}]; //读取图片的qrcode特性 NSArray *qrcodeFeatures = [qrcodeDetector featuresInImage:qrcodeImage]; //返回的结果,只读取一条 NSString *qrcodeResultString = nil; if (qrcodeFeatures && qrcodeFeatures.count > 0) { for (CIQRCodeFeature *qrcodeFeature in qrcodeFeatures) { if (qrcodeResultString && qrcodeResultString.length > 0) { break; } qrcodeResultString = qrcodeFeature.messageString; } } NSLog(@"%@",qrcodeResultString); return qrcodeResultString; }
在iOS10下提示错误:
[qrcodeDetector featuresInImage:qrcodeImage];
解决办法:设置相册图片为可编辑属性,即可解决此问题
pickerVC.allowsEditing = Yes;
#2.iOS10下相关权限适配:
在Info.plist中添加字段
Privacy - Camera Usage Description 打开相机 Privacy - Photo Library Usage Description 打开相册