Мне нужно создать PDF-файл (сделано) и сохранить его в приложении «Файлы», чтобы пользователь мог получить к нему доступ в любое время за пределами моего приложения. Я попробовал пакеты rn-fetch-blob
и react-native-fs
, и они отлично работали для Android, но для iOS они могут создавать файлы только во внутреннем хранилище приложения (поэтому файлы не создаются во внешнем хранилище, то есть не в приложении iOS Files).
Какие параметры у меня есть для сохранения созданных файлов в приложении «Файлы»? Я знаю, что это возможно, т.е. Приложение Slack позволяет сохранять файлы в приложение «Файлы».
Вы должны либо добавить ключ UISupportsDocumentBrowser
и установить значение true, либо оба ключа UIFileSharingEnabled
и LSSupportsOpeningDocumentsInPlace
в файле Info.plist
Когда пользователь откроет документ из каталога «Документы» вашего приложения через приложение «Файлы», он будет редактировать документ на месте. Изменения сохраняются в каталоге документов вашего приложения.
Подробнее см. это.
Спасибо! Ваш ответ помог. P.S.: Я добавил все ключи, которые вы упомянули.
Я добавил новую функциональность в модуль react-native-share для хранения файла только в приложении Files
. Он еще не объединен, но вы можете использовать мою версию форка.
https://github.com/gevorg94/react-native-share/tree/share-files-app.
Замените "react-native-share": "X.X.X"
на "react-native-share": "git+https://github.com/gevorg94/react-native-share.git#share-files-app",
.
Вы можете найти использование в PR https://github.com/react-native-community/react-native-share/pull/681
вы можете попробовать с помощью react-native-fs
сохранить и загрузить в локальный каталог.
var url = path let fileName = path.split("/").pop() // console.info('fileName', fileName) var ext = this.extention(url); ext = "." + ext[0]; const localFile =
${RNFS.LibraryDirectoryPath}/${fileName}
; // console.info('localFile', localFile)const options = { fromUrl: path, toFile: localFile, fileCache: true }; if (await RNFS.exists(localFile)) { FileViewer.open(localFile, { displayName: this.props.route.params.conversationSubject }); } else { await RNFS.downloadFile(options).promise .then((res) => { // console.info('res', res) FileViewer.open(localFile); }) .then((res) => { // success // console.info("success", res); }) .catch(error => { // error console.info("Attachment open error: ", error); }); }
Я добавил приведенные ниже ключи в info.plist, но у меня это не сработало. Какой каталог вы использовали для сохранения загруженного файла в приложении «Файлы» iOS. Мой функционал точно такой же, как у вас.