Ada*_*m H 5 ios ionic-framework capacitor ionic5
我有以下代码(改编自本教程),用于从后端保存文件:
import { FilesystemDirectory, Plugins } from '@capacitor/core';
const { Filesystem } = Plugins;
await Filesystem.writeFile({
path: "filename.txt",
data: "base64 data",
directory: FilesystemDirectory.Documents,
});
Run Code Online (Sandbox Code Playgroud)
该代码在 Android 上运行良好,甚至Documents在内部存储的根目录中创建目录。不幸的是,在 iOS 上,无论我使用哪个目录,都不会创建文件(我已经使用Documents、Data和进行了测试ExternalStorage)。当我将此代码块放入其中时try..catch,不会抛出任何内容,因此操作应该已成功完成,只是没有保存文件。在一台 Android 设备和两台 iOS 设备上进行了测试。
iOS 不允许直接访问文件存储。我让它与 Ionic-native 的FileOpener一起工作,如下所示:
import { FileOpener } from '@ionic-native/file-opener/ngx';
import { FilesystemDirectory, Plugins } from '@capacitor/core';
const { Filesystem } = Plugins;
const result = await Filesystem.writeFile({
path: "filename.txt",
data: "base64 data",
directory: FilesystemDirectory.Documents,
});
this.fileOpener.showOpenWithDialog(result.uri, 'application/json')
Run Code Online (Sandbox Code Playgroud)
它会打开一个对话框,您可以在其中选择文件的保存位置。这有点令人困惑,因为该功能的描述是“使用系统模式打开以使用已安装的应用程序打开文件”,但保存也适用。
您还需要安装 cordova-plugin-file-opener2 并将 ionic FileOpener 添加到 app.module.ts 中的提供程序中。如果您不使用 Cordova,则无需进行 Cordova 设置,它作为单独的插件与 Capacitor 一起工作。据我所知,Capacitor 不提供在 iOS 中下载的解决方案。
小智 6
我遇到了同样的问题(仅使用电容器 4.2.0)并通过在 Info.plist 中添加以下权限来解决它:
<key>UIFileSharingEnabled</key>
<string>YES</string>
<key>LSSupportsOpeningDocumentsInPlace</key>
<string>YES</string>
Run Code Online (Sandbox Code Playgroud)
之后,使用目录Directory.Documents使我可以在文件应用程序下看到一个文档目录,其中包含应用程序的名称。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
6650 次 |
| 最近记录: |