توفر واجهة برمجة التطبيقات (API) وظيفة متقدمة لتنزيل الملفات تستمر بعد إنهاء التطبيق، وتعمل في الخلفية وتستمر حتى عندما يقوم المستخدم بإغلاق/تعليق التطبيق. يتضمن البرنامج الإضافي تحديثات التقدم وهو مصمم بشكل أساسي لعمليات النقل طويلة المدى للموارد مثل الفيديو والموسيقى والصور الكبيرة.
استخدام العينة
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); }); });
التخزين الداخلي مقابل التخزين الخارجي (بطاقة SD) على نظام Android
التخزين الخارجي
حل دليل cordova.file.externalDataDirectory
في وقت التشغيل
window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
لاحظ أن هذا الجهاز يمكن أن يكون بدون وحدة تخزين خارجية. في هذه الحالة، سيكون cordova.file.externalDataDirectory
null
لذا يجب التحقق منه قبل الاستخدام.
التخزين الداخلي
حل دليل cordova.file.dataDirectory
في وقت التشغيل
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
اقرأ المراوغات الخاصة ببرنامج File Plugin للحصول على مزيد من التفاصيل:
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
المنصات المدعومة
Windows8
ويندوز فون8
iOS 7.0 أو الأحدث
أندرويد
المراوغات
إذا اكتملت عملية التنزيل عندما كان التطبيق في الخلفية، فسيتم استدعاء رد الاتصال onSuccess عندما يصبح التطبيق نشطًا.
إذا اكتملت عملية التنزيل عند إغلاق التطبيق، فسيتم استدعاء رد اتصال onSuccess مباشرة بعد استدعاء startAsync() الأول لنفس معرف الموارد (URI)، كما لو تم تنزيل الملف على الفور.
تؤدي عملية التنزيل الجديدة لنفس عنوان uri إلى استئناف التنزيل المعلق بدلاً من تشغيل تنزيل جديد. إذا لم يتم العثور على تنزيلات معلقة لـ uri المحدد، فسيتم بدء تنزيل جديد، وسيتم الكتابة فوق الملف الهدف تلقائيًا بمجرد اكتمال التنزيل.
على نظام Android، يتم إنشاء ملف التنزيل المؤقت على وحدة تخزين خارجية (القيود المفروضة على DownloadManager)، لذلك إذا لم يكن هناك وحدة تخزين خارجية، فسيفشل التنزيل.