Cordova/Phonegap - iOS文件系统自定义根路径iosExtraFilesystems无法正常工作

tdu*_*and 6 filesystems ios cordova

我在iOS上使用了cordova 3.4和org.apache.cordova.file(最新版本1.3.1).

我想将数据存储在Library/NoCloud目录中,我发现在doc中我们应该在config.xml中设置这些变量:

<preference name="iosPersistentFileLocation" value="Library" />
<preference name="iosExtraFilesystems" value="library-nosync" />
Run Code Online (Sandbox Code Playgroud)

但它不起作用,它给了我一个库/文件中的文件系统根,我无法移动到NoCloud目录,因为我们无法获取根库/文件的父.

有人也在努力解决这个问题吗?您是否成功使用了iosExtraFilesystems var?

我正在尝试升级cordova,但在做这件事时还有其他问题..我会发布进一步的进展.

更新:

不使用cordova 3.5,3.6,我在apache的jira跟踪器上创建了一个问题:https://issues.apache.org/jira/browse/CB-7687

谢谢

蒂博

Ian*_*and 13

使用resolveLocalFileSystemURL而不是requestLocalFileSystem

最简单的方法(自v1.2.0起)与cordova.file.dataDirectory属性有关.它应该是library-nosync目录的路径.您可以结合使用它resolveLocalFileSystemURL来获取可以在其中创建文件的目录条目对象.

这样的事情应该有效:

resolveLocalFileSystemURL(cordova.file.dataDirectory, function(entry) {
    console.log("Success! Got a DirectoryEntry");
    // Do more things with `entry` here
}, function(error) {
    console.error("Something bad happened, and we didn't get a DirectoryEntry");
});
Run Code Online (Sandbox Code Playgroud)

其他一些说明

澄清您在问题中提到的两个设置:

<preference name="iosPersistentFileLocation" value="Library" />
Run Code Online (Sandbox Code Playgroud)

此首选项只是告诉File插件,默认情况下,PERSISTENT文件系统应该将文件存储在设备的Library目录下.如果没有该设置,则默认值是以前Cordova版本(Documents目录)使用的位置.无论如何,库文件系统可供您的应用程序使用(只要您没有使用下一个设置禁用它)

<preference name="iosExtraFilesystems" value="library-nosync" />
Run Code Online (Sandbox Code Playgroud)

该iosExtraFilesystems优先讲述的文件系统的根,除了默认值(临时和永久)安装文件的插件.默认情况下,它设置为字符串

"library,library-nosync,documents,documents-nosync,cache,bundle,root"
Run Code Online (Sandbox Code Playgroud)

这已包含library-nosync,因此您不必添加它.实际上,以实际方式设置它实际上会从应用程序中删除其他文件系统根.