Как удалить кэшированные файлы, загруженные с помощью phonegap-plugin-contentsync? - PullRequest
0 голосов
/ 15 ноября 2018

В приложении, которое мы разработали с помощью cordova, нам нужно удалять файлы, загруженные с помощью плагина contentsync .

Это то, что я реализовал, используя плагин file .

function clearCache() {
    localStorage.clear();

    // remove the stuff from the file system as well
    deleteAllFilesInPath(cordova.file.dataDirectory);
    deleteAllFilesInPath(cordova.file.cacheDirectory);
    deleteAllFilesInPath(cordova.file.externalDataDirectory);
    deleteAllFilesInPath(cordova.file.externalCacheDirectory);
}

function deleteAllFilesInPath(path) {
    if (!path) { return; }
    window.resolveLocalFileSystemURL(path, function (entry) {
        if (entry.isDirectory) {
            var dirReader = entry.createReader();
            dirReader.readEntries(function(entries) {
                console.log(entries);
                for (var i in entries) {
                    deleteFileOrDirEntry(entries[i]);
                }
            })
        }
    })
}

function deleteLocalPath(path) {
    window.resolveLocalFileSystemURL(path,
        deleteFileOrDirEntry,
        function (error) {
            log.error("failed to access ", path, " error: ", JSON.stringify(error));
        });
}
function deleteFileOrDirEntry(entry) {
    if (entry.isDirectory) {
        entry.removeRecursively(function (code) {
                log.info("deleted dir ", entry.fullPath, " ", code);
            },
            function (error) {
                log.error("failed to remove dir ", entry.fullPath, " error: ", JSON.stringify(error))
            });
    } else {
        entry.remove(function (code) {
                log.info("deleted file ", entry.fullPath, " ", code);
            },
            function (error) {
                log.error("failed to remove file ", entry.fullPath, " error: ", JSON.stringify(error))
            });
    }
}

Это хорошо работает на Android. На iOS возникла проблема, что при повторной синхронизации файлов происходит сбой с ошибкой:

Task ... completed with error: The operation couldn't be completed. No such file or directory
Error downloading type: 2, responseCode: 200

Но когда я закрываю приложение и перезагружаюсь, оно работает.

Я не нашел API для удаления файлов непосредственно в плагине синхронизации. Нужно ли переустанавливать плагин / сообщать ему об удаленных файлах?

1 Ответ

0 голосов
/ 15 ноября 2018

Ах, похоже, на iOS плагин запутывается, если также очищается каталог кеша. Если я просто сделаю:

function clearCache() {
    localStorage.clear();

    // remove the stuff from the file system as well
    deleteAllFilesInPath(cordova.file.dataDirectory);
    // deleteAllFilesInPath(cordova.file.cacheDirectory);
    deleteAllFilesInPath(cordova.file.externalDataDirectory);
    // deleteAllFilesInPath(cordova.file.externalCacheDirectory);
}

это работает.

(Остается вопрос, подходит ли этот способ удаления файлов для плагина синхронизации или для этого есть / должен быть API).

...