A API fornece uma funcionalidade avançada de download de arquivos que persiste após o encerramento do aplicativo, é executada em segundo plano e continua mesmo quando o usuário fecha/suspende o aplicativo. O plug-in inclui atualizações de progresso e foi projetado principalmente para operações de transferência de longo prazo de recursos como vídeo, música e imagens grandes.
Uso de amostra
var fileName = "PointerEventsCordovaPlugin.wmv", uriString = "http://media.ch9.ms/ch9/8c03/f4fe2512-59e5-4a07-bded-124b06ac8c03/PointerEventsCordovaPlugin.wmv"; // open target file for download window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { fileSystem.root.getFile(fileName, { create: true }, function (targetFile) { var onSuccess, onError, onProgress; // plugin callbacks to track operation execution status and progress var downloader = new BackgroundTransfer.BackgroundDownloader(); // Create a new download operation. var download = downloader.createDownload(uriString, targetFile); // Start the download and persist the promise to be able to cancel the download. app.downloadPromise = download.startAsync().then(onSuccess, onError, onProgress); }); });
Armazenamento interno versus externo (cartão SD) no Android
Armazenamento Externo
resolver o diretório cordova.file.externalDataDirectory
em tempo de execução
window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Observe que esse dispositivo pode não ter armazenamento externo. Neste caso, cordova.file.externalDataDirectory
será null
, portanto deve ser verificado antes do uso.
Armazenamento Interno
resolver o diretório cordova.file.dataDirectory
em tempo de execução
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Leia as peculiaridades do plug-in de arquivo para obter mais detalhes:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#android-quirks.
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#configurando-the-plugin-optiona
Plataformas suportadas
Windows8
Windows Phone8
iOS 7.0 ou posterior
Android
Peculiaridades
Se uma operação de download foi concluída quando o aplicativo estava em segundo plano, o retorno de chamada onSuccess será chamado quando o aplicativo se tornar ativo.
Se uma operação de download foi concluída quando o aplicativo foi fechado, o retorno de chamada onSuccess será chamado logo após o primeiro startAsync() ser chamado para o mesmo uri, como se o arquivo tivesse sido baixado imediatamente.
Uma nova operação de download para o mesmo uri retoma um download pendente em vez de acionar um novo. Se nenhum download pendente for encontrado para o uri especificado, um novo download será iniciado, o arquivo de destino será substituído automaticamente assim que o download for concluído.
No Android, o download temporário do arquivo é criado no armazenamento externo (limitação do DownloadManager), portanto, se não houver armazenamento externo, o download falhará.