Javascript 和 Cordova/Phonegap FileWriter 在写入简单文本文件时给出 Invalid_Modification_Error

Javascript and Cordova/Phonegap FileWriter gives Invalid_Modification_Error on a simple text file write

我正在使用 Cordova File 和 FileTransfer 插件。我在 config.xml

中设置了以下权限
<feature name="File">
    <param name="ios-package" value="CDVFile" />
</feature>
<feature name="FileTransfer">
    <param name="ios-package" value="CDVFileTransfer" />
</feature>

我正在尝试使用以下代码编写一个纯文本文件:

this.writeFile = function (filename, content, type, callback) {
   window.resolveLocalFileSystemURL(cordova.file.applicationDirectory, function(dir) { 
       dir.getFile(filename, { create: true }, function(fileEntry) {
            fileEntry.createWriter(function(fileWriter) {
                fileWriter.onwriteend = function(e) {
                    console.log('WRITE SUCCESS');
                    callback(null, e);
                };
                fileWriter.onerror = function(e) {
                    console.log('WRITE ERROR is');
                    console.log(e); 
                    callback(e);
                };

                var blob = new Blob([content], {type: type});
                fileWriter.write(blob);
            }, callback);
        }, callback);
    }, callback);
};

当我执行下面的行时:

this.writeFile('stuff.txt', 'Eggs and Burgers', 'text/plain', callback);

我在用代码 9 转换为 INVALID_MODIFICATION_ERROR 写入文件时出错。这是什么意思?与权限有关吗?如何在 Xcode 或 Cordova 中为我的应用授予文件系统权限?

另一个问题是我的回调函数被调用了两次!一次成功,一次错误。现在明白writeend并不一定代表操作成功了,但是遇到这种情况怎么处理呢?

请注意,此问题仅发生在实际的 iOS 设备上。在 iOS 模拟器中,它在文件系统上运行和写入都非常好。解决完怎么写文本文件,我就接着写png/mp3/wav个文件

感谢所有帮助。谢谢。

事实证明,上面的代码没有任何问题,只是 Apple 禁止在安装包后写入应用包。捆绑包已签名,之后不允许修改。

要能够写入数据,只需更改

cordova.file.applicationDirectory

cordova.file.dataDirectory

并根据需要将以下内容添加到您的 config.xml 中:

<preference name="iosPersistentFileLocation" value="Library" />

您的数据将存储在 iOS 中的 Library/NoCloud 目录中。

进一步阅读 iOS 文件系统: https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html