Как создать и сохранить файл в приложении «Файлы» (платформа iOS)

Мне нужно создать PDF-файл (сделано) и сохранить его в приложении «Файлы», чтобы пользователь мог получить к нему доступ в любое время за пределами моего приложения. Я попробовал пакеты rn-fetch-blob и react-native-fs, и они отлично работали для Android, но для iOS они могут создавать файлы только во внутреннем хранилище приложения (поэтому файлы не создаются во внешнем хранилище, то есть не в приложении iOS Files). Какие параметры у меня есть для сохранения созданных файлов в приложении «Файлы»? Я знаю, что это возможно, т.е. Приложение Slack позволяет сохранять файлы в приложение «Файлы».

Я добавил приведенные ниже ключи в info.plist, но у меня это не сработало. Какой каталог вы использовали для сохранения загруженного файла в приложении «Файлы» iOS. Мой функционал точно такой же, как у вас.

JiteshW 30.07.2019 13:46
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
3 080
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы должны либо добавить ключ UISupportsDocumentBrowser и установить значение true, либо оба ключа UIFileSharingEnabled и LSSupportsOpeningDocumentsInPlace в файле Info.plist

Когда пользователь откроет документ из каталога «Документы» вашего приложения через приложение «Файлы», он будет редактировать документ на месте. Изменения сохраняются в каталоге документов вашего приложения.

Подробнее см. это.

Спасибо! Ваш ответ помог. P.S.: Я добавил все ключи, которые вы упомянули.

E. Dn 29.05.2019 10:57

Я добавил новую функциональность в модуль 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);
                });
        }

Другие вопросы по теме