react-native-image-picker这个图片选择的第三方库,但在正确配置的情况下,点击选择相册会遇到闪退的问题,凭借开发原生的经验,找到了问题所在,在这里分享一下解决办法。



ios 14 h5 图片一直闪_错误信息

react-native.jpeg


问题




ios 14 h5 图片一直闪_ios 14 h5 图片一直闪_02

选择器.png


点击选择相册或者拍照都会闪退,在Chrome上是没有错误信息的,想看到错误信息需要再XCode上运行程序,才会看到。




ios 14 h5 图片一直闪_错误信息_03

错误信息.png



上面这段文字大致翻译过来的意思是

这个程序已经崩溃,因为它试图访问隐私数据但没有使用说明。在info.plist文件中必须包含一个NSPhotoLibraryUsageDescription关键字符串,来向用户解释应用程序如何使用这些数据。

说白了就是需要再info.plist里面新增一个键值对。

这个问题是因为iOS10对隐私权限的管理更为严格 ,比如访问的摄像头、麦克风等硬件,都需要提前请求应用权限、允许后才可以使用,或者现在要提前声明,虽然以往要求不严格,如果遇到闪退需要在



ios 14 h5 图片一直闪_App_04

info.plist图片.png


Supporting Files 文件夹中的。

解决方法




ios 14 h5 图片一直闪_ios 14 h5 图片一直闪_05

流程1.png



![Uploading 流程2_390070.png . . .]
点击info.plist文件,会出现上面的内容,通过点击红框中的小加号,来添加需要的字段。




ios 14 h5 图片一直闪_错误信息_06

流程2.png



在红框里面填写NSPhotoLibraryUsageDescription(这个字段是访问相册,下面会有全部字段)



ios 14 h5 图片一直闪_错误信息_07

流程3.png



在后面的String中填写App需要您的同意,才能访问相册(这段文字可以随意更改)



ios 14 h5 图片一直闪_字段_08

流程4.png



填写完两个字段之后,就可以正常的使用react-native-image-picker啦!

这样一个一个添加是不是感觉很麻烦呢,在这里提供给大家一个简单的方式,在网上搜索的那些,都没有说明白下面两句话该写在那里。
<key>NSPhotoLibraryUsageDescription</key>
<string>photoLibraryDesciption</string>

更快捷的解决方法




ios 14 h5 图片一直闪_字段_09

更便捷的方式.png



按照上图的流程,点击Source Code



ios 14 h5 图片一直闪_错误信息_10

修改页面.png


<key><key><string><string>的形式展现出来了!接下来就是将最下面的参数,复制粘贴到上面啦!

需要用到的参数

<key>NSCameraUsageDescription<key>
<string>App需要您的同意,才能访问相机<string>

<key>NSPhotoLibraryUsageDescription<key>
<string>App需要您的同意,才能访问相册<string>

<key>NSContactsUsageDescription<key>
<string>App需要您的同意,才能访问通讯录<string>

<key>NSLocationAlwaysUsageDescription<key>
<string>App需要您的同意,才能始终访问位置<string>

<key>NSLocationUsageDescription<key>
<string>App需要您的同意,才能访问位置<string>

<key>NSLocationWhenInUseUsageDescription<key>
<string>App需要您的同意,才能在使用期间访问位置<string>

<key>NSMicrophoneUsageDescription<key>
<string>App需要您的同意,才能访问麦克风<string>

<key>NSBluetoothPeripheralUsageDescription<key>
<string>App需要您的同意,才能访问蓝牙<string>

<key>NSCalendarsUsageDescription<key>
<string>App需要您的同意,才能访问日历<string>

<key>NSAppleMusicUsageDescription<key>
<string>App需要您的同意,才能访问媒体资料库<string>

<key>NSHealthShareUsageDescription<key>
<string>App需要您的同意,才能访问健康分享<string>

<key>NSHealthUpdateUsageDescription<key>
<string>App需要您的同意,才能访问健康更新<string>

<key>NSMotionUsageDescription<key>
<string>App需要您的同意,才能访问运动与健身<string>

<key>NSRemindersUsageDescription<key>
<string>App需要您的同意,才能访问提醒事项<string>

总结

这篇文章其实更像是一篇给自己用来做整理的文章,省的以后再去晚上找那些莫名其妙的参数了。
如果文章中有什么地方写错了,或写的不清楚的地方,欢迎在评论区评论,或者发私信给我哦。