如何仅使用 iOS 5+ 和 Cordova 3.5 在本地永久存储数据文件?
Posted
技术标签:
【中文标题】如何仅使用 iOS 5+ 和 Cordova 3.5 在本地永久存储数据文件?【英文标题】:How to store data files permanently and locally only with iOS 5+ and Cordova 3.5? 【发布时间】:2014-10-10 06:10:01 【问题描述】:我想将一些数据文件存储在一个相当永久的位置,该位置应该不与 iCloud 同步。
按照 Cordova 文档,cordova.file.cacheDirectory
是我的最佳选择:
cordova.file.cacheDirectory
- 缓存数据文件或您的应用可以轻松重新创建的任何文件的目录。当设备存储空间不足时,操作系统可能会删除这些文件,但是,应用程序不应依赖操作系统来删除此处的文件
为了控制是否达到我的目标,我检查了 iCloud 同步的数据大小:
安装并启动您的应用 转到设置 > iCloud > 存储和备份 > 管理存储 如有必要,点按“显示所有应用”检查应用的存储空间
嗯,我的应用总是那么重...
这是我到目前为止所做的:
Xcode 中的云授权已关闭config.xml
<preference name="BackupWebStorage" value="none" />
<preference name="iosPersistentFileLocation" value="Library" />
function onDeviceReady()
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem ;
window.requestFileSYstem(LocalFileSystem.PERSISTENT, 0, gotFS, function()
console.log('Error FS');
);
function gotFS(fileSystem)
window.cacheFS = fileSystem.cacheDirectory;
document.addEventListener('deviceReady', onDeviceReady, false);
然后,我使用cacheFS.toURL()
作为基本目录来存储文件。
你能看到我错过了什么吗?
Apple 表示不应同步的数据应具有“不备份”属性,NSURL 对象的NSURLIsExcludedFromBackupKey
属性,CFURLRef 对象的kCFURLIsExcludedFromBackupKey
属性。我不知道那些对象是什么,以及如何使用 Cordova 应用属性...
【问题讨论】:
【参考方案1】:确实,我发现在应用程序文档目录的根目录下创建了一个NoCloud
文件夹。此文件夹中存储的所有数据都不会上传到 iCloud。
【讨论】:
【参考方案2】:您可以通过以下方式获取文件:
window.resolveLocalFileSystemURL(
cordova.file.dataDirectory,
function gotDir(dir)
console.log("Data directory located");
dir.getFile("new_file", create:true,
function(file)
console.log("got the file", file);
file.createWriter(this.gotFileWriter,
function fail()
console.log("Unable to create the writer");
);
);
,
function fail()
console.log("Unable to locate the data dir");
);
【讨论】:
以上是关于如何仅使用 iOS 5+ 和 Cordova 3.5 在本地永久存储数据文件?的主要内容,如果未能解决你的问题,请参考以下文章
Cordova: 仅使用HTML/JS即可制作一个Android或者iOS的App
Cordova 5.3.3 和安装的 Cordova iOS 3.9.1 在 iOS9 中无法访问互联网
Cordova 3.5.0 iOS 应用程序中的暂存文件夹需要啥?