banchichen / TZImagePickerController

一个支持多选、选原图和视频的图片选择器,同时有预览、裁剪功能,支持iOS6+。 A clone of UIImagePickerController, support picking multiple photos、original photo、video, also allow preview photo and video, support iOS6+
MIT License
8.07k stars 1.87k forks source link

iOS 14设备先保存图片,后续读取图片失败 #1456

Closed nyz110 closed 3 years ago

nyz110 commented 3 years ago

提bug前必看 请先回答下列三个问题,否则不允处理,谢谢配合。 1、我最新的Demo是否有这个bug?【如果Demo没问题,请升级新版】 答:是

2、你用的是什么版本?升级到最新版后是否正常? 答:最新版本

3、是否有改动过我库内部的代码?【如有,请告诉我你改了什么】 答:有 ,只修改了demo,改动如下 1、infoplist 添加权限`NSPhotoLibraryAddUsageDescription

添加图片` 2、viewcontroller 里面添加保存图片的代码 > - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; _selectedPhotos = [NSMutableArray array]; _selectedAssets = [NSMutableArray array]; [self configCollectionView]; UIImage *image = [UIImage imageNamed:@"panel"]; UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); } > - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo { if (error) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"无法保存" message:@"请在iPhone的\"设置-隐私-照片\"选项中,允许访问你的照片" delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil]; [alert show]; } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"图片已成功保存至您的相册" delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil]; [alert show]; } } **bug内容描述** 代码改动如上,iOS 14 设备首次安装,先保存图片提示添加图片权限,同意权限之后,再选择图片,提示读取相册权限,同意权限后,列表为空,控制台打印log如下: 2021-01-06 16:15:50.351734+0800 TZImagePickerController[11222:2569939] [error] CoreData: Something has gone badly awry initializing the XPC connection pool: *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil 2021-01-06 16:14:50.177325+0800 TZImagePickerController[11222:2569939] CoreData: XPC: Unable to sendMessage: to server **我如何复现这个bug?** 代码及配置如上修改 ,iOS 14设备第一次安装,同意权限,保存图片,点击+按钮选取图片,同意读取相册权限,页面会空白。后面重新打开APP会正常。 **截图** ![bug](https://user-images.githubusercontent.com/12728951/103747485-b3850b00-503d-11eb-9236-8c2e5c7748ee.gif) **其它说明** 有没有其它要补充的?比如你的初始化TZImagePickerController的代码
banchichen commented 3 years ago

基本确定是系统bug:https://developer.apple.com/forums/thread/658114

可以在保存图片前,先获取下相册读写权限来绕过: 比如在UIImageWriteToSavedPhotosAlbum前先调用下 [[TZImageManager manager] authorizationStatusAuthorized]