【问题标题】:How to store data files permanently and locally only with iOS 5+ and Cordova 3.5?如何仅使用 iOS 5+ 和 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" />
    
  • 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 表示不应同步的数据应具有“不备份”属性,NSURL 对象的NSURLIsExcludedFromBackupKey 属性,CFURLRef 对象的kCFURLIsExcludedFromBackupKey 属性。我不知道那些对象是什么,以及如何使用 Cordova 应用属性...

【问题讨论】:

    标签: ios cordova storage icloud


    【解决方案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");
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-03
        • 2015-08-09
        • 1970-01-01
        • 2014-04-15
        • 2015-03-22
        • 2021-06-12
        • 2021-08-22
        • 1970-01-01
        相关资源
        最近更新 更多