الفرق بين المراجعتين لصفحة: «Cordova/cordova plugin network information»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:إضافة حال الشبكة في كوردوفا}}</noinclude> تصنيف: Cordova تصنيف: Plugin توفر هذه الإض...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:إضافة حال الشبكة في كوردوفا}}</noinclude> | <noinclude>{{DISPLAYTITLE:إضافة حال الشبكة في كوردوفا}}</noinclude> | ||
[[تصنيف: Cordova]] | [[تصنيف: Cordova]] | ||
[[تصنيف: Plugin]] | [[تصنيف: Plugin]] | ||
توفر إضافة حالة الشبكة (<code>cordova-plugin-network-information</code>) تقديمًا لإصدار قديم من [http://www.w3.org/TR/2011/WD-netinfo-api-20110607/ الواجهة البرمجية لمعلومات الشبكة]. إذ توفر معلومات حول اتصال الجهاز الخلوي، واللاسكلي (wifi)، وتتحقق مما إذا كان الجهاز متصلا بالإنترنت. | |||
للحصول على بعض الأفكار حول كيفية استخدام هذه الإضافة، اذهب إلى المثال التوضيحي في أسفل هذه الصفحة. | |||
== التثبيت == | |||
يمكن تثبيت هذه الإضافة عبر الأمر:<syntaxhighlight lang="shell">cordova plugin add cordova-plugin-network-information</syntaxhighlight> | |||
== التثبيت == | |||
<syntaxhighlight lang=" | |||
== المنصات المدعومة == | == المنصات المدعومة == | ||
سطر 18: | سطر 15: | ||
*ويندوز | *ويندوز | ||
Connection | == <code>Connection</code> == | ||
يوفر الكائن <code>connection</code>، الذي يمكن الحصول عليه عبر <code>navigator.connection</code>، | يوفر الكائن <code>connection</code>، الذي يمكن الحصول عليه عبر <code>navigator.connection</code>، معلوماتٍ حول اتصال الجهاز الخلوي، واللاسلكي. | ||
== خاصيات == | === خاصيات === | ||
*connection.type | *<code>connection.type</code> | ||
==ثوابت== | ===ثوابت=== | ||
*Connection.UNKNOWN | *<code>Connection.UNKNOWN</code> | ||
*Connection.ETHERNET | *<code>Connection.ETHERNET</code> | ||
*Connection.WIFI | *<code>Connection.WIFI</code> | ||
*Connection.CELL_2G | *<code>Connection.CELL_2G</code> | ||
*Connection.CELL_3G | *<code>Connection.CELL_3G</code> | ||
*Connection.CELL_4G | *<code>Connection.CELL_4G</code> | ||
*Connection.CELL | *<code>Connection.CELL</code> | ||
*Connection.NONE | *<code>Connection.NONE</code> | ||
==connection.type== | ===<code>connection.type</code>=== | ||
توفر هذه الخاصية طريقة سريعة لتحديد حالة اتصال الجهاز بالشبكة، ونوع الاتصال. | توفر هذه الخاصية طريقة سريعة لتحديد حالة اتصال الجهاز بالشبكة، ونوع الاتصال. | ||
=== مثال | |||
==== مثال ==== | |||
<syntaxhighlight lang="javascript">function checkConnection() { | <syntaxhighlight lang="javascript">function checkConnection() { | ||
var networkState = navigator.connection.type; | var networkState = navigator.connection.type; | ||
سطر 52: | سطر 50: | ||
} | } | ||
checkConnection();</syntaxhighlight> | checkConnection();</syntaxhighlight> | ||
=== التغييرات في الواجهة البرمجية=== | ==== التغييرات في الواجهة البرمجية==== | ||
حتى الإصدار 2.3.0 من كوردوفا، كان المطورون يصلون إلى الكائن <code>Connection</code> عبر التعبير <code>navigator.network.connection</code>، وبعد ذلك تم تغييره إلى <code>navigator.connection</code> ليتطابق مع مواصفات W3C. لا يزال متوفرًا في موقعه القديم، | حتى الإصدار 2.3.0 من كوردوفا، كان المطورون يصلون إلى الكائن <code>Connection</code> عبر التعبير <code>navigator.network.connection</code>، وبعد ذلك تم تغييره إلى <code>navigator.connection</code> ليتطابق مع مواصفات W3C. لكنه لا يزال متوفرًا في موقعه القديم، غير أنّه مٌهملٌ الآن، وسيُزال في إصدار قادمٍ. | ||
=== ملاحظات خاصة بمنصة iOS === | ==== ملاحظات خاصة بمنصة iOS ==== | ||
* يتعذر على منصات iOS | * يتعذر على منصات iOS دون الإصدار 7 اكتشافَ نوع الاتصال الخلوي بالشبكة. | ||
* | * تُعيّن الخاصية <code>navigator.connection.type</code> إلى القيمة <code>Connection.CELL</code> لجميع البيانات الخلوية. | ||
=== ملاحظات خاصة بمنصة ويندوز === | ==== ملاحظات خاصة بمنصة ويندوز ==== | ||
* عند تشغيل التطبيق على محاكي Windows Phone 8.1، | * عند تشغيل التطبيق على محاكي Windows Phone 8.1، فستكون الخاصية <code>navigator.connection.type</code> مساوية دائمًا للقيمة <code>Connection.ETHERNET</code>. | ||
=== ملاحظات خاصة بالمتصفحات (Browsers) === | ==== ملاحظات خاصة بالمتصفحات (Browsers) ==== | ||
* لا يمكن للمتصفح اكتشاف نوع الاتصال بالشبكة. | * لا يمكن للمتصفح اكتشاف نوع الاتصال بالشبكة. إذ تُضبط الخاصية <code>navigator.connection.type</code> دائمًا عند القيمة <code>Connection.UNKNOWN</code> عند الاتصال بالإنترنت. | ||
أحداث متعلقة بالشبكة | == أحداث متعلقة بالشبكة == | ||
==offline== | ===<code>offline</code>=== | ||
يُطلق هذا الحدث عند انقطاع اتصال التطبيق (offline)، وعندما لا يكون الجهاز متصلاً بالإنترنت. | يُطلق هذا الحدث عند انقطاع اتصال التطبيق (offline)، وعندما لا يكون الجهاز متصلاً بالإنترنت. | ||
<syntaxhighlight lang="javascript">document.addEventListener("offline", yourCallbackFunction, false);</syntaxhighlight> | <syntaxhighlight lang="javascript">document.addEventListener("offline", yourCallbackFunction, false);</syntaxhighlight> | ||
=== تفاصيل === | ==== تفاصيل ==== | ||
يُطلق الحدث <code>offline</code> عندما يفقد | يُطلق الحدث <code>offline</code> عندما يفقد جهازٌ مُتصلٌ سابقًا بالشبكة اتصاله بالشبكة، بحيث يتعذر على التطبيق الوصول إلى الإنترنت. يعتمد هذا الحدث على نفس معلومات الواجهة البرمجية للكائن <code>Connection</code>، ويُطلق عندما تصبح قيمة الخاصية <code>connection.type</code> مساوية للقيمة <code>NONE</code>. | ||
في العادة، يجب أن تستخدم التطبيقات <code>document.addEventListener</code> لإرفاق مُنصتٍ (listener) بمجرد إطلاق الحدث <code>deviceready</code>. | في العادة، يجب أن تستخدم التطبيقات التابعَ <code>document.addEventListener</code> لإرفاق مُنصتٍ (listener)بمجرد إطلاق الحدث <code>deviceready</code>. | ||
=== مثال سريع === | ==== مثال سريع ==== | ||
<syntaxhighlight lang="javascript">document.addEventListener("offline", onOffline, false); | <syntaxhighlight lang="javascript">document.addEventListener("offline", onOffline, false); | ||
function onOffline() { | function onOffline() { | ||
// | // offline معالجة الحدث | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
=== ملاحظات خاصة بمنصة iOS === | ==== ملاحظات خاصة بمنصة iOS ==== | ||
أثناء بدء التشغيل الأولي، يستغرق أول | أثناء بدء التشغيل الأولي، يستغرق أول حدثٍ <code>offline</code> (إن كان مُطبّقا) ثانيةً واحدةً على الأقل قبل إطلاقه. | ||
==online== | ===<code>online</code>=== | ||
يُطلق هذا الحدث | يُطلق هذا الحدث عندما يربط أحد التطبيقات الاتصال بالإنترنت، وعند توصيل الجهاز بالإنترنت. | ||
<syntaxhighlight lang="javascript">document.addEventListener("online", yourCallbackFunction, false);</syntaxhighlight> | <syntaxhighlight lang="javascript">document.addEventListener("online", yourCallbackFunction, false);</syntaxhighlight> | ||
=== تفاصيل === | ==== تفاصيل ==== | ||
يُطلق الحدث <code>online</code> عندما يربط جهاز غير متصل سابقًا | يُطلق الحدث <code>online</code> عندما يربط جهاز غير متصل سابقًا الاتصالَ بالشبكة للسماح بوصول تطبيقٍ ما إلى الإنترنت. ويعتمد على نفس معلومات الواجهة البرمجية للكائن <code>Connection</code>، ويُطلق عندما تتغير قيمة الخاصية <code>connection.type</code> من <code>NONE</code> إلى أي قيمة أخرى. | ||
في العادة، يجب أن تستخدم | في العادة، يجب أن تستخدم التطبيقاتُ التابعَ <code>document.addEventListener</code> لإرفاق منصتٍ بحدثٍ بمجرد إطلاق الحدث <code>[[Cordova/events#deviceready|deviceready]]</code>. | ||
=== مثال سريع === | ==== مثال سريع ==== | ||
<syntaxhighlight lang="javascript">document.addEventListener("online", onOnline, false); | <syntaxhighlight lang="javascript">document.addEventListener("online", onOnline, false); | ||
function onOnline() { | function onOnline() { | ||
// | // online معالجة الحدث | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
=== ملاحظات خاصة بمنصة iOS === | ==== ملاحظات خاصة بمنصة iOS ==== | ||
أثناء بدء التشغيل الأولي، يستغرق الحدث <code>online</code> الأول (إن وُجد) ثانية واحدةً على الأقل قبل إطلاقه، | أثناء بدء التشغيل الأولي، يستغرق الحدث <code>online</code> الأول (إن وُجد) ثانية واحدةً على الأقل قبل إطلاقه، وتكون قيمة الخاصية <code>connection.type</code> قبل ذلك مساوية للقيمة <code>UNKNOWN</code>. | ||
== | == مثال توضيحي == | ||
تعرض الشيفرات البرمجية الموجودة في هذا القسم | تعرض الشيفرات البرمجية الموجودة في هذا القسم أمثلةً لتغيير سلوك التطبيق باستخدام الحدثين <code>online</code> و <code>offline</code> وحالات الاتصال بالشبكة. | ||
سنبدأ بإنشاء كائنٍ FileEntry جديدٍ (data.txt) لاستخدامه لجمع البيانات. استدع الدالة التالية | سنبدأ بإنشاء كائنٍ <code>FileEntry</code> جديدٍ (<code>data.txt</code>) لاستخدامه لجمع البيانات. استدع الدالة التالية في معالج الحدث <code>[[Cordova/events#deviceready|deviceready]]</code>. | ||
ملاحظة: يتطلب هذا المثال تثبيت إضافة الملفات. | |||
'''ملاحظة''': يتطلب هذا المثال تثبيت [[Cordova/cordova plugin file|إضافة الملفات]]. | |||
<syntaxhighlight lang="javascript">var dataFileEntry; | <syntaxhighlight lang="javascript">var dataFileEntry; | ||
function createSomeData() { | function createSomeData() { | ||
window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) { | window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) { | ||
console.log('file system open: ' + fs.name); | console.log('file system open: ' + fs.name); | ||
// | // انشاء ملف جديد، أو فتح ملف موجود | ||
fs.root.getFile("data.txt", { create: true, exclusive: false }, function (fileEntry) { | fs.root.getFile("data.txt", { create: true, exclusive: false }, function (fileEntry) { | ||
dataFileEntry = fileEntry; | dataFileEntry = fileEntry; | ||
سطر 118: | سطر 117: | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
بعد ذلك، أضف | بعد ذلك، أضف مُنصتَين (listeners) للحدثين <code>online</code> و <code>offline</code> في معالج الحدث <code>[[Cordova/events#deviceready|deviceready]]</code>. | ||
<syntaxhighlight lang="javascript">document.addEventListener("offline", onOffline, false); | <syntaxhighlight lang="javascript">document.addEventListener("offline", onOffline, false); | ||
document.addEventListener("online", onOnline, false);</syntaxhighlight> | document.addEventListener("online", onOnline, false);</syntaxhighlight> | ||
ستعالج دالة التطبيق <code>onOnline</code> الحدث online. في معالج الحدث، تحقق من الحالة الراهنة للشبكة. | ستعالج دالة التطبيق <code>onOnline</code> الحدث <code>online</code>. في معالج الحدث، تحقق من الحالة الراهنة للشبكة. سنتعامل مع كل أنواع الاتصال باستثناء النوع <code>Connection.NONE</code>. إن حصلت على اتصال، فحاول تحميل ملف. | ||
<syntaxhighlight lang="javascript">function onOnline() { | <syntaxhighlight lang="javascript">function onOnline() { | ||
// | // online معالجة الحدث | ||
var networkState = navigator.connection.type; | var networkState = navigator.connection.type; | ||
if (networkState !== Connection.NONE) { | if (networkState !== Connection.NONE) { | ||
سطر 134: | سطر 133: | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
الشيفرة السابقة ستستدعي دالة التطبيق <code>tryToUploadFile</code> عند إطلاق الحدث <code>online</code>. | |||
إن فشل استدعاء التابع upload الخاص بالكائن | إن فشل استدعاء التابع <code>upload</code> الخاص بالكائن <code>FileTransfer</code>، فاستدع دالة التطبيق <code>offlineWrite</code> لحفظ البيانات الحالية في مكان ما. | ||
ملاحظة: يتطلب هذا المثال الإضافة FileTransfer. | |||
'''ملاحظة''': يتطلب هذا المثال الإضافة <code>FileTransfer</code>. | |||
<syntaxhighlight lang="javascript">function tryToUploadFile() { | <syntaxhighlight lang="javascript">function tryToUploadFile() { | ||
// | // يحتوي على عنوان صالح يُشير إلى ملف نصي على الجهاز fileURL نفترض أن المتغير | ||
var fileURL = getDataFileEntry().toURL(); | var fileURL = getDataFileEntry().toURL(); | ||
var success = function (r) { | var success = function (r) { | ||
سطر 154: | سطر 154: | ||
options.mimeType = "text/plain"; | options.mimeType = "text/plain"; | ||
var ft = new FileTransfer(); | var ft = new FileTransfer(); | ||
// Content-Security-Policy تأكد من إضافة نطاق عنوان الخادم إلى الوسم | |||
// Content-Security-Policy | // index.html في الملف | ||
ft.upload(fileURL, encodeURI(SERVER), success, fail, options); | ft.upload(fileURL, encodeURI(SERVER), success, fail, options); | ||
};</syntaxhighlight> | };</syntaxhighlight> | ||
إليك شيفرة الدالة <code>offlineWrite</code>. | |||
ملاحظة: | |||
'''ملاحظة''': يتطلب هذا المثال [[Cordova/cordova plugin file|إضافة الملفات]]. | |||
<syntaxhighlight lang="javascript">function offlineWrite(offlineData) { | <syntaxhighlight lang="javascript">function offlineWrite(offlineData) { | ||
// | // FileEntry لأجل FileWriter انشاء كائن | ||
dataFileEntry.createWriter(function (fileWriter) { | dataFileEntry.createWriter(function (fileWriter) { | ||
fileWriter.onwriteend = function () { | fileWriter.onwriteend = function () { | ||
سطر 175: | سطر 176: | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
عند وقوع الحدث <code>offline</code>، افعل شيئًا ما، مثل تنبيه المستخدم. في هذا المثال، سنعرض رسالة عبر دالة سطر الأوامر <code>log</code>. | |||
<syntaxhighlight lang="javascript">function onOffline() { | <syntaxhighlight lang="javascript">function onOffline() { | ||
// | // offline معالجة الحدث | ||
console.log("lost connection"); | console.log("lost connection"); | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
== انظر أيضا== | |||
*إضافة <nowiki/>[[Cordova/events|الأحداث]] | |||
*إضافة <nowiki/>[[Cordova/cordova plugin file|الوصول إلى الملفات]] | |||
*[[Cordova/plugins|دليل تطوير الإضافات في كوردوفا]] | |||
==مصادر== | ==مصادر== | ||
*[https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-network-information/index.html صفحة cordova-plugin-network-information في توثيق كوردوفا الرسمي.] | *[https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-network-information/index.html صفحة cordova-plugin-network-information في توثيق كوردوفا الرسمي.] |
مراجعة 10:25، 22 ديسمبر 2018
توفر إضافة حالة الشبكة (cordova-plugin-network-information
) تقديمًا لإصدار قديم من الواجهة البرمجية لمعلومات الشبكة. إذ توفر معلومات حول اتصال الجهاز الخلوي، واللاسكلي (wifi)، وتتحقق مما إذا كان الجهاز متصلا بالإنترنت.
للحصول على بعض الأفكار حول كيفية استخدام هذه الإضافة، اذهب إلى المثال التوضيحي في أسفل هذه الصفحة.
التثبيت
يمكن تثبيت هذه الإضافة عبر الأمر:
cordova plugin add cordova-plugin-network-information
المنصات المدعومة
- أندرويد
- Browser
- iOS
- ويندوز
Connection
يوفر الكائن connection
، الذي يمكن الحصول عليه عبر navigator.connection
، معلوماتٍ حول اتصال الجهاز الخلوي، واللاسلكي.
خاصيات
connection.type
ثوابت
Connection.UNKNOWN
Connection.ETHERNET
Connection.WIFI
Connection.CELL_2G
Connection.CELL_3G
Connection.CELL_4G
Connection.CELL
Connection.NONE
connection.type
توفر هذه الخاصية طريقة سريعة لتحديد حالة اتصال الجهاز بالشبكة، ونوع الاتصال.
مثال
function checkConnection() {
var networkState = navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.CELL] = 'Cell generic connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
}
checkConnection();
التغييرات في الواجهة البرمجية
حتى الإصدار 2.3.0 من كوردوفا، كان المطورون يصلون إلى الكائن Connection
عبر التعبير navigator.network.connection
، وبعد ذلك تم تغييره إلى navigator.connection
ليتطابق مع مواصفات W3C. لكنه لا يزال متوفرًا في موقعه القديم، غير أنّه مٌهملٌ الآن، وسيُزال في إصدار قادمٍ.
ملاحظات خاصة بمنصة iOS
- يتعذر على منصات iOS دون الإصدار 7 اكتشافَ نوع الاتصال الخلوي بالشبكة.
- تُعيّن الخاصية
navigator.connection.type
إلى القيمةConnection.CELL
لجميع البيانات الخلوية.
ملاحظات خاصة بمنصة ويندوز
- عند تشغيل التطبيق على محاكي Windows Phone 8.1، فستكون الخاصية
navigator.connection.type
مساوية دائمًا للقيمةConnection.ETHERNET
.
ملاحظات خاصة بالمتصفحات (Browsers)
- لا يمكن للمتصفح اكتشاف نوع الاتصال بالشبكة. إذ تُضبط الخاصية
navigator.connection.type
دائمًا عند القيمةConnection.UNKNOWN
عند الاتصال بالإنترنت.
أحداث متعلقة بالشبكة
offline
يُطلق هذا الحدث عند انقطاع اتصال التطبيق (offline)، وعندما لا يكون الجهاز متصلاً بالإنترنت.
document.addEventListener("offline", yourCallbackFunction, false);
تفاصيل
يُطلق الحدث offline
عندما يفقد جهازٌ مُتصلٌ سابقًا بالشبكة اتصاله بالشبكة، بحيث يتعذر على التطبيق الوصول إلى الإنترنت. يعتمد هذا الحدث على نفس معلومات الواجهة البرمجية للكائن Connection
، ويُطلق عندما تصبح قيمة الخاصية connection.type
مساوية للقيمة NONE
.
في العادة، يجب أن تستخدم التطبيقات التابعَ document.addEventListener
لإرفاق مُنصتٍ (listener)بمجرد إطلاق الحدث deviceready
.
مثال سريع
document.addEventListener("offline", onOffline, false);
function onOffline() {
// offline معالجة الحدث
}
ملاحظات خاصة بمنصة iOS
أثناء بدء التشغيل الأولي، يستغرق أول حدثٍ offline
(إن كان مُطبّقا) ثانيةً واحدةً على الأقل قبل إطلاقه.
online
يُطلق هذا الحدث عندما يربط أحد التطبيقات الاتصال بالإنترنت، وعند توصيل الجهاز بالإنترنت.
document.addEventListener("online", yourCallbackFunction, false);
تفاصيل
يُطلق الحدث online
عندما يربط جهاز غير متصل سابقًا الاتصالَ بالشبكة للسماح بوصول تطبيقٍ ما إلى الإنترنت. ويعتمد على نفس معلومات الواجهة البرمجية للكائن Connection
، ويُطلق عندما تتغير قيمة الخاصية connection.type
من NONE
إلى أي قيمة أخرى.
في العادة، يجب أن تستخدم التطبيقاتُ التابعَ document.addEventListener
لإرفاق منصتٍ بحدثٍ بمجرد إطلاق الحدث deviceready
.
مثال سريع
document.addEventListener("online", onOnline, false);
function onOnline() {
// online معالجة الحدث
}
ملاحظات خاصة بمنصة iOS
أثناء بدء التشغيل الأولي، يستغرق الحدث online
الأول (إن وُجد) ثانية واحدةً على الأقل قبل إطلاقه، وتكون قيمة الخاصية connection.type
قبل ذلك مساوية للقيمة UNKNOWN
.
مثال توضيحي
تعرض الشيفرات البرمجية الموجودة في هذا القسم أمثلةً لتغيير سلوك التطبيق باستخدام الحدثين online
و offline
وحالات الاتصال بالشبكة.
سنبدأ بإنشاء كائنٍ FileEntry
جديدٍ (data.txt
) لاستخدامه لجمع البيانات. استدع الدالة التالية في معالج الحدث deviceready
.
ملاحظة: يتطلب هذا المثال تثبيت إضافة الملفات.
var dataFileEntry;
function createSomeData() {
window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) {
console.log('file system open: ' + fs.name);
// انشاء ملف جديد، أو فتح ملف موجود
fs.root.getFile("data.txt", { create: true, exclusive: false }, function (fileEntry) {
dataFileEntry = fileEntry;
}, onErrorCreateFile);
}, onErrorLoadFs);
}
بعد ذلك، أضف مُنصتَين (listeners) للحدثين online
و offline
في معالج الحدث deviceready
.
document.addEventListener("offline", onOffline, false);
document.addEventListener("online", onOnline, false);
ستعالج دالة التطبيق onOnline
الحدث online
. في معالج الحدث، تحقق من الحالة الراهنة للشبكة. سنتعامل مع كل أنواع الاتصال باستثناء النوع Connection.NONE
. إن حصلت على اتصال، فحاول تحميل ملف.
function onOnline() {
// online معالجة الحدث
var networkState = navigator.connection.type;
if (networkState !== Connection.NONE) {
if (dataFileEntry) {
tryToUploadFile();
}
}
display('Connection type: ' + networkState);
}
الشيفرة السابقة ستستدعي دالة التطبيق tryToUploadFile
عند إطلاق الحدث online
.
إن فشل استدعاء التابع upload
الخاص بالكائن FileTransfer
، فاستدع دالة التطبيق offlineWrite
لحفظ البيانات الحالية في مكان ما.
ملاحظة: يتطلب هذا المثال الإضافة FileTransfer
.
function tryToUploadFile() {
// يحتوي على عنوان صالح يُشير إلى ملف نصي على الجهاز fileURL نفترض أن المتغير
var fileURL = getDataFileEntry().toURL();
var success = function (r) {
console.log("Response = " + r.response);
display("Uploaded. Response: " + r.response);
}
var fail = function (error) {
console.log("An error has occurred: Code = " + error.code);
offlineWrite("Failed to upload: some offline data");
}
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.mimeType = "text/plain";
var ft = new FileTransfer();
// Content-Security-Policy تأكد من إضافة نطاق عنوان الخادم إلى الوسم
// index.html في الملف
ft.upload(fileURL, encodeURI(SERVER), success, fail, options);
};
إليك شيفرة الدالة offlineWrite
.
ملاحظة: يتطلب هذا المثال إضافة الملفات.
function offlineWrite(offlineData) {
// FileEntry لأجل FileWriter انشاء كائن
dataFileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function () {
console.log("Successful file write...");
display(offlineData);
};
fileWriter.onerror = function (e) {
console.log("Failed file write: " + e.toString());
};
fileWriter.write(offlineData);
});
}
عند وقوع الحدث offline
، افعل شيئًا ما، مثل تنبيه المستخدم. في هذا المثال، سنعرض رسالة عبر دالة سطر الأوامر log
.
function onOffline() {
// offline معالجة الحدث
console.log("lost connection");
}
انظر أيضا
- إضافة الأحداث
- إضافة الوصول إلى الملفات
- دليل تطوير الإضافات في كوردوفا