使用cordova文件插件时如何从iOS导出文件?

Posted

技术标签:

【中文标题】使用cordova文件插件时如何从iOS导出文件?【英文标题】:how do you export a file out of iOS when using cordova file plugin? 【发布时间】:2015-07-22 05:53:30 【问题描述】:

我在 ios 设备上使用 https://github.com/apache/cordova-plugin-file 并尝试写入文件。我可以写文件,但根据 iOS 文件系统布局,我写的所有这些位置都是私有的。

我猜这是由于 Apple 的沙盒安全模型,因此每个应用程序只能查看其自己的捆绑包中的文件。这在 cordova.file.externalRootDirectory 位置不是私有的 android 上是不同的。

我的问题是:如何从 iOS 设备导出此文件?

我正在编写的文件包含一长串由我正在运行的 Cordova 应用程序捕获的 GPS 位置列表。我可以在 XCode 中的设备下查看该文件,然后导出整个容器以查看该文件。但是必须有更好的方法来传输文件。是否可以通过 iTunes 或 iCloud 将 Cordova 生成的文件从 iOS 设备传输到计算机?

我也尝试过使用cordova.file.syncedDataDirectory,我可以将文件写入该位置。但该文件没有出现在我的 iCloud 帐户中。

【问题讨论】:

【参考方案1】:

你必须使用iTunes文件共享

文件共享支持

文件共享支持让应用程序可以让用户数据文件在 iTunes 9.1 及更高版本。声明支持文件的应用程序 共享使其 /Documents 目录的内容可用于 用户。然后,用户可以将文件移入和移出此目录 从 iTunes 需要。此功能不允许您的应用共享 与同一设备上的其他应用程序的文件;这种行为需要 粘贴板或文档交互控制器对象。

要为您的应用启用文件共享,请执行以下操作:

将 UIFileSharingEnabled 键添加到应用的 Info.plist 文件中,并将键的值设置为 YES。

将您想要共享的任何文件放在应用的 Documents 目录中。

当设备插入用户的计算机时,iTunes 会在选定的应用程序选项卡中显示文件共享部分 设备。

用户可以将文件添加到此目录或将文件移动到桌面。

支持文件共享的应用程序应该能够识别文件何时 已添加到 Documents 目录并做出适当响应。 例如,您的应用可能会生成任何新文件的内容 可从其界面获得。你永远不应该向用户展示 此目录中的文件列表并要求他们决定要做什么 与这些文件。

因此,将 UIFileSharingEnabled 添加到您的 info.plist 并将其设置为 YES

https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/CoreServicesLayer/CoreServicesLayer.html#//apple_ref/doc/uid/TP40007898-CH10-SW30

【讨论】:

插件cordova-plugin-itunesfilesharing 自动添加此键和正确的YES 有什么方法可以将文件保存到 iCloud、云端硬盘、草稿等云应用中。whatsapp、facebook 和 skype 等流行应用的效果如何? 使用文件插件,如果你使用cordova.file.syncedDataDirectory,应该备份在iCloud上。除此之外,您将需要一个插件来将内容保存在 iCloud 中,不确定是否有可用的。【参考方案2】:

@jcesarmobile 的回答帮助我找到了在 iOS 中启用文件共享所需的信息。在确认我可以通过修改XCode中的info.plist文件来启用文件共享后,我发现你可以直接在config.xml文件中设置UIFileSharingEnabled,但这有点棘手,因为它不是标准的偏好。

<gap:config-file platform="ios" parent="UIFileSharingEnabled" mode="replace">
  <true/>
</gap:config-file>

将其放入我的 config.xml 文件后,它就起作用了。

这在 PhoneGap 文档中有说明,但我承认它真的被埋没了,有点难找。

http://docs.build.phonegap.com/en_US/configuring_config_file_element.md.html#Config%20File%20Elements

【讨论】:

是的,这将适用于 phonegap 构建用户。进行本地开发的用户必须手动编辑 .plist 或创建一个仅将其写入 info.plist 的插件

以上是关于使用cordova文件插件时如何从iOS导出文件?的主要内容,如果未能解决你的问题,请参考以下文章

将cordova文件插件添加到现有ios项目时重复符号_kCDVFilesystemURLPrefix

Visual Studio 2013 更新 4 cordova,如何导出 Android apk 文件发布到 PlayStore

如何从 zip 文件安装 cordova 插件

适用于 iOS 的 Cordova 文件选择器?

如何在带有 cordova 的 iOS 设备中从 iCloud 读取文件?

自定义 Cordova 插件 iOS index.js 无法识别我的 .js 文件