Я использую плагины 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.
Я ценю всю помощь. Спасибо.