Я знаю, что могу использовать import {Linking} from 'react-native'
, чтобы использовать Linking.canOpenURL(url)
и открыть другое приложение.
Я могу открыть PowerPoint , выполнив это: Linking.canOpenURL('ms-powerpoint://app')
, но мне нужно откройте там файл.
Согласно Документации Microsoft Я должен быть в состоянии сделать это:
Linking.canOpenURL('ms-powerpoint:ofv|u|https://blablabla.com/file.pptx')
, но приложение сообщает мне:
« Извините, файл file.pptx хранится в неподдерживаемом расположении сервера. »
Еще я подумал, что сначала нужно загрузить файл и отправить локальный путь, но, хотя он открывает PowerPoint и показывает сообщение «Загрузка / открытие», оно выглядит так, как будто это пустой сеанс.
Вот небольшой фрагмент кода:
import React from 'react';
import {Button, Linking} from 'react-native';
import RNFS, {DownloadFileOptions} from 'react-native-fs';
function ShowPPTComponent(props) {
function openFile() {
const {file} = props;
const temporalStoragePath = `${RNFS.DocumentDirectoryPath}/${file.name}.${file.extension}`;
const options = {
fromUrl: file.url,
toFile: temporalStoragePath,
};
// Downloads the file.
RNFS.downloadFile(options as DownloadFileOptions).promise.then(() => {
const url = `ms-powerpoint:ofv|u|${temporalStoragePath}`;
// Goes to PowerPoint
return Linking.openURL(url);
});
}
return (
<Button onPress={openFile} title="Open in PowerPoint" />
);
}
INFO PLIST
<key>LSApplicationQueriesSchemes</key>
<array>
<string>launch-ppt</string>
<string>powerpoint</string>
<string>ms-powerpoint</string>
<string>open-ppt</string>
</array>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
<key>UISupportsDocumentBrowser</key>
<true/>
Примечания:
В другом месте приложения я показал опции IOS Share, и я смог выбрать PowerPoint и открыть файл, и он отлично работает. Таким образом, и файл, и приложение PowerPoint работают хорошо.
(Идея состоит в том, чтобы не показывать IOS Share Modal, но напрямую открывать PowerPoint с файлом).
Заранее спасибо!