最近做項(xiàng)目用到了react-native-image-picker
這個(gè)圖片選擇的第三方庫(kù),但在正確配置的情況下脓斩,點(diǎn)擊選擇相冊(cè)會(huì)遇到閃退的問(wèn)題摊册,憑借開(kāi)發(fā)原生的經(jīng)驗(yàn)涡真,找到了問(wèn)題所在变擒,在這里分享一下解決辦法胜卤。
如果遇到什么問(wèn)題可以在評(píng)論區(qū)回復(fù),或者加QQ群397885169討論
react-native.jpeg
問(wèn)題
選擇器.png
點(diǎn)擊選擇相冊(cè)或者拍照都會(huì)閃退赁项,在Chrome上是沒(méi)有錯(cuò)誤信息的,想看到錯(cuò)誤信息需要再XCode上運(yùn)行程序澈段,才會(huì)看到悠菜。
錯(cuò)誤信息.png
上面這段文字大致翻譯過(guò)來(lái)的意思是
這個(gè)程序已經(jīng)崩潰,因?yàn)樗噲D訪(fǎng)問(wèn)隱私數(shù)據(jù)但沒(méi)有使用說(shuō)明。在info.plist文件中必須包含一個(gè)NSPhotoLibraryUsageDescription關(guān)鍵字符串,來(lái)向用戶(hù)解釋?xiě)?yīng)用程序如何使用這些數(shù)據(jù)败富。
說(shuō)白了就是需要再info.plist里面新增一個(gè)鍵值對(duì)悔醋。
這個(gè)問(wèn)題是因?yàn)閕OS10對(duì)隱私權(quán)限的管理更為嚴(yán)格 ,比如訪(fǎng)問(wèn)的攝像頭兽叮、麥克風(fēng)等硬件芬骄,都需要提前請(qǐng)求應(yīng)用權(quán)限、允許后才可以使用鹦聪,或者現(xiàn)在要提前聲明账阻,雖然以往要求不嚴(yán)格,如果遇到閃退需要在
info.plist圖片.png
注意:在一個(gè)iOS項(xiàng)目中會(huì)有兩個(gè)info.plist泽本,我們需要的是上面的那個(gè)文件淘太,而不是Supporting Files 文件夾
中的。
解決方法
流程1.png
![Uploading 流程2_390070.png . . .]
點(diǎn)擊info.plist文件,會(huì)出現(xiàn)上面的內(nèi)容蒲牧,通過(guò)點(diǎn)擊紅框中的小加號(hào)撇贺,來(lái)添加需要的字段。
流程2.png
在紅框里面填寫(xiě)
NSPhotoLibraryUsageDescription
(這個(gè)字段是訪(fǎng)問(wèn)相冊(cè)冰抢,下面會(huì)有全部字段)流程3.png
在后面的String中填寫(xiě)
App需要您的同意,才能訪(fǎng)問(wèn)相冊(cè)
(這段文字可以隨意更改)流程4.png
填寫(xiě)完兩個(gè)字段之后松嘶,就可以正常的使用
react-native-image-picker
啦!
這樣一個(gè)一個(gè)添加是不是感覺(jué)很麻煩呢挎扰,在這里提供給大家一個(gè)簡(jiǎn)單的方式翠订,在網(wǎng)上搜索的那些,都沒(méi)有說(shuō)明白下面兩句話(huà)該寫(xiě)在那里鼓鲁。
<key>NSPhotoLibraryUsageDescription</key>
<string>photoLibraryDesciption</string>
更快捷的解決方法
更便捷的方式.png
按照上圖的流程蕴轨,點(diǎn)擊
Source Code
修改頁(yè)面.png
經(jīng)群友北極狼
的經(jīng)驗(yàn),在安卓上也是可能出現(xiàn)閃退問(wèn)題的骇吭,所以需要添加如下代碼
在android/app/src/AndroidManifest.xml
中添加
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
打開(kāi)這個(gè)頁(yè)面了吧橙弱!是不是感覺(jué)很熟悉,剛才寫(xiě)的東西燥狰,是不是以<key><key>
<string><string>
的形式展現(xiàn)出來(lái)了棘脐!接下來(lái)就是將最下面的參數(shù),復(fù)制粘貼到上面啦龙致!
需要用到的參數(shù)
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)相機(jī)</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)相冊(cè)</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>App需要您的同意,才能保存圖片到您的相冊(cè)</string>
<key>NSContactsUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)通訊錄</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>App需要您的同意,才能始終訪(fǎng)問(wèn)位置</string>
<key>NSLocationUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)位置</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>App需要您的同意,才能在使用期間訪(fǎng)問(wèn)位置</string>
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)麥克風(fēng)</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)藍(lán)牙</string>
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)日歷</string>
<key>NSAppleMusicUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)媒體資料庫(kù)</string>
<key>NSHealthShareUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)健康分享</string>
<key>NSHealthUpdateUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)健康更新</string>
<key>NSMotionUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)運(yùn)動(dòng)與健身</string>
<key>NSRemindersUsageDescription</key>
<string>App需要您的同意,才能訪(fǎng)問(wèn)提醒事項(xiàng)</string>
總結(jié)
這篇文章其實(shí)更像是一篇給自己用來(lái)做整理的文章蛀缝,省的以后再去晚上找那些莫名其妙的參數(shù)了。
如果文章中有什么地方寫(xiě)錯(cuò)了目代,或?qū)懙牟磺宄牡胤角海瑲g迎在評(píng)論區(qū)評(píng)論,或者發(fā)私信給我哦榛了。