每个 iOS 程序都有一个独立的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒。应用必须待在自己的沙盒里,其他应用不能访问该沙盒(通过shareAction插件分享除外)。当然该应用也不能访问其它应用的沙盒(某些系统资源除外,如系统相册等,编译之前需申请访问权限)。
Documents (fs://协议对应的路径的根目录)保存应用程序的重要数据文件和用户数据文件等。用户数据基本上都放在这个位置(例如从网上下载的图片或音乐文件),该文件夹在应用程序更新时会自动备份,在连接iTunes时也可以自动同步备份其中的数据。
Library/Caches:(cache://协议对应的路径的根目录)保存应用程序使用时产生的支持文件和缓存文件(保存应用程序再次启动过程中需要的信息),还有日志文件最好也放在这个目录。iTunes 同步时不会备份该目录并且可能被其他工具清理掉其中的数据。
注:Files 中文名为「文件」,为方便区分,本文中使用「Files」指代 iOS 11 的原生文件管理器 APP。
Files 分为两个主界面——「最近搜索」和「浏览」。「浏览」的是我们熟悉的文件管理器的布局。左侧边栏显示云盘服务和标签栏,右侧是常见的树状结构的文件系统,既可以选择网状也可以选择列表。详情参考 iOS 11 系统上的 Files APP。
若想要自己的 APP(只支持显示沙盒中的 Documents 目录),能在 Files 中(我的***)显示,需要配置 Info.plist 文件。有关 Info.plist 文件的说明参考论坛。
本功能配置示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIFileSharingEnabled</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
</dict>
</plist>
注意:UIFileSharingEnabled 是配置 APP 开通通过 iTunes 共享文件功能。必须 UIFileSharingEnabled 和 LSSupportsOpeningDocumentsInPlace 同时配置为 true,才能实现在 Files 里查看 APP 沙盒的 Documents 目录。配置此功能提交苹果商店时需要加上详细的说明,否则审核会被拒绝。
本插件封装了在 iOS 11 上应用内打开 Files APP 的相关功能接口。通过本插件可在应用内打开 Files APP ,并选择获取可在 Files 中显示的文件。也可以在相应位置创建文件。
以 window 的形式打开 Files
open({params},callback(ret))
types:
ret:
{
status: //布尔类型;是否打开成功,true|false
}
var fileReader = api.require('fileReader');
fileReader.open(function(ret) {
if (ret.status) {
alert('打开 Files 成功!');
}
});
iOS 系统
可提供的 1.0.0 及更高版本
添加事件监听
addEventListener({params},callback(ret))
target:
ret:
{
urls: //数组类型;选中的文件的绝对路径组成的数组
}
var fileReader = api.require('fileReader');
fileReader.addEventListener({
target:'cancel'
},function() {
alert('取消了');
});
iOS 系统
可提供的 1.0.0 及更高版本