如何仅使用iOS 5+和Cordova 3.5永久和本地存储数据文件?

时间:2014-10-10 06:10:02

标签: ios cordova storage icloud

我想将一些数据文件存储在一个非常永久的位置,这应该与iCloud同步。

根据Cordova文档,cordova.file.cacheDirectory是我的最佳选择:

  

cordova.file.cacheDirectory - 缓存数据文件的目录或您的应用可以轻松重新创建的任何文件。操作系统可能会在设备运行不足时删除这些文件,然而,应用程序不应该依赖操作系统删除此处的文件

为了控制我是否达到目标,我检查iCloud同步的数据大小:

  
      
  • 安装并启动您的应用
  •   
  • 转到设置> iCloud>存储&备份>管理存储
  •   
  • 如有必要,请点击"显示所有应用"检查您应用的存储空间
  •   

好吧,我的应用程序总是很重......

这是我到目前为止所做的:

  • Xcode
  • 中的云授权已关闭
  • config.xml中

    <preference name="BackupWebStorage" value="none" />
    <preference name="iosPersistentFileLocation" value="Library" />
    
  • 的Javascript

    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说,不应该同步的数据应该有一个&#34;不要备份&#34;属性,NSURL对象的NSURLIsExcludedFromBackupKey属性,CFURLRef对象的kCFURLIsExcludedFromBackupKey属性。我不知道这些对象是什么,以及如何使用Cordova应用属性......

2 个答案:

答案 0 :(得分:1)

实际上,我发现在app文档目录的根目录下创建了一个NoCloud文件夹。存储在此文件夹中的所有数据都不会上传到iCloud。

答案 1 :(得分:0)

您可以使用以下内容获取文件:

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");
    });