我這是在使用 React Native - CameraRoll將圖片保存到本地相冊包報的錯誤
版本:react-native: 0.57.8
react-native-image-zoom-viewer: 2.2.25
發(fā)生這個問題主要有兩個原因:
一、CameraRoll 用法不對
1、saveToCameraRoll(tag, type?)方法介紹
(1)這個是 CameraRoll 的一個靜態(tài)方法,作用是保存一張圖片到相冊。
(2)參數(shù) tag 是圖片的地址,為字符串類型。其內(nèi)容根據(jù)不同的設(shè)備也有所不同:
- 在 Android 上:tag 是本地地址,例如:"file:///sdcard/img.png"
- 在 iOS 上:tag 可以是 url、assets-library、內(nèi)存圖片中的一種。
(3)參數(shù) type 不是必須的,可選值是'photo' 或 'video'。用來表示存的是圖片還是視頻。不指定的話程序也會根據(jù)后綴自行判斷。(結(jié)尾為 .mov 或 .mp4 為視頻,其它為圖片)
具體可以參考https://reactnative.cn/docs/cameraroll/
2、 準(zhǔn)備工作
(1)如果要在 iOS 上使用這個模塊,我們首先要鏈接 RCTCameraRoll 庫。進入到工程項目中的 node_module/react-native/Libraries/CameraRoll

image.png
(2)把 RCTCameraRoll.xcodeproj 添加到在項目工程的 Liberaries 文件夾下

image.png
(3)在 Build Phases -> Link Binary With Libraries 里添加 libRCTCameraRoll.a

image.png
(4)由于蘋果安全策略更新,還需要在 Info.plist 配置請求照片相的關(guān)描述字段(Privacy - Photo Library Usage Description)

image.png
二、當(dāng)我把上面所有的東西都配置完了之后,在 react-native 啟動的模擬器里還是一保存就報錯,之后查了各種資料沒有找到解決辦法,索性我就直接用 Xcode 打包試了一下,沒發(fā)生任何問題。其實已經(jīng)可以了,而且我還用真機試了,也沒問題,這只能說明 react-native 啟動的項目有問題,這時候就沒必要管它了。