API proporciona una funcionalidad avanzada de descarga de archivos que persiste más allá de la finalización de la aplicación, se ejecuta en segundo plano y continúa incluso cuando el usuario cerró o suspendió la aplicación. El complemento incluye actualizaciones de progreso y está diseñado principalmente para operaciones de transferencia a largo plazo de recursos como videos, música e imágenes de gran tamaño.
Uso de muestra
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); }); });
Almacenamiento interno versus externo (tarjeta SD) en Android
Almacenamiento externo
resolver el directorio cordova.file.externalDataDirectory
en tiempo de ejecución
window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Tenga en cuenta que ese dispositivo puede no tener almacenamiento externo. En este caso, cordova.file.externalDataDirectory
será null
, por lo que se debe verificar antes de usarlo.
Almacenamiento interno
resolver el directorio cordova.file.dataDirectory
en tiempo de ejecución
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Lea las peculiaridades del complemento de archivo para obtener más detalles:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#android-quirks.
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#configuring-the-plugin-optiona
Plataformas compatibles
windows8
Windows Phone8
iOS 7.0 o posterior
Androide
peculiaridades
Si se completó una operación de descarga cuando la aplicación estaba en segundo plano, se llama a la devolución de llamada onSuccess cuando la aplicación se activa.
Si se completó una operación de descarga cuando se cerró la aplicación, se llama a la devolución de llamada onSuccess justo después de que se llama al primer startAsync() para el mismo uri, como si el archivo se hubiera descargado inmediatamente.
Una nueva operación de descarga para el mismo uri reanuda una descarga pendiente en lugar de activar una nueva. Si no se encuentran descargas pendientes para el URI especificado, se inicia una nueva descarga y el archivo de destino se sobrescribirá automáticamente una vez que se complete la descarga.
En Android, el archivo de descarga temporal se crea en un almacenamiento externo (limitación de DownloadManager), por lo que si no hay un almacenamiento externo, la descarga fallará.