استخدام واجهة برمجة التطبيقات Notification API

Ernest Delgado
Ernest Delgado

مقدمة

تتيح لك Notifications API عرض إشعارات للمستخدم بشأن أحداث معيّنة، سواء بشكل سلبي (الرسائل الإلكترونية الجديدة أو التغريدات أو أحداث التقويم) أو استنادًا إلى تفاعلات المستخدم بغض النظر عن علامة التبويب التي تم التركيز عليها. تتوفّر مسودة المواصفات، ولكنها ليست مضمّنة حاليًا في أي معيار.

يمكنك اتّباع الخطوات التالية البسيطة لتنفيذ الإشعارات في بضع دقائق فقط:

الخطوة 1: التحقّق من توفّر واجهة برمجة التطبيقات Notifications API

نتحقق مما إذا كان webkitNotifications متوافقًا. يُرجى العِلم أنّ اسم webkitNotifications يرجع إلى أنّه جزء من مسودة المواصفات. وستتضمّن المواصفات النهائية دالة notifications() بدلاً من ذلك.

// check for notifications support
// you can omit the 'window' keyword
if (window.webkitNotifications) {
console.log("Notifications are supported!");
}
else {
console.log("Notifications are not supported for this Browser/OS version yet.");
}

الخطوة 2: السماح للمستخدم بمنح أذونات لموقع إلكتروني لعرض الإشعارات

سيؤدي أيّ من منشئي النماذج الذين ذكرناهم إلى ظهور خطأ أمان إذا لم يمنح المستخدم أذونات يدويًا للموقع الإلكتروني لعرض الإشعارات. لمعالجة الاستثناء، يمكنك استخدام بيان try-catch، ولكن يمكنك أيضًا استخدام طريقة checkPermission للغرض نفسه.

document.querySelector('#show_button').addEventListener('click', function() {
if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
// function defined in step 2
window.webkitNotifications.createNotification(
    'icon.png', 'Notification Title', 'Notification content...');
} else {
window.webkitNotifications.requestPermission();
}
}, false);

إذا لم يكن تطبيق الويب يملك أذونات لعرض الإشعارات، ستعرض الطريقة requestPermission شريط معلومات:

شريط معلومات إذن الإشعارات في Google Chrome
شريط معلومات إذن الإشعارات في Google Chrome

ومع ذلك، من المهم جدًا تذكُّر أنّ طريقة requestPermission لا تعمل إلا في معالِجات الأحداث التي يشغّلها أحد إجراءات المستخدم، مثل أحداث الماوس أو لوحة المفاتيح، وذلك لتجنُّب ظهور أشرطة معلومات غير مرغوب فيها. في هذه الحالة، يكون إجراء المستخدِم هو النقر على الزر الذي يحمل المعرّف show_button. لن يعمل المقتطف أعلاه أبدًا إذا لم ينقر المستخدم صراحةً على زر أو رابط يؤديان إلى تشغيل requestPermission في مرحلة ما.

الخطوة 3: إرفاق مستمعين وإجراءات أخرى

document.querySelector('#show_button').addEventListener('click', function() {
  if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
    // function defined in step 2
    notification_test = window.webkitNotifications.createNotification(
      'icon.png', 'Notification Title', 'Notification content...');
    notification_test.ondisplay = function() { ... do something ... };
    notification_test.onclose = function() { ... do something else ... };
    notification_test.show();
  } else {
    window.webkitNotifications.requestPermission();
  }
}, false);

في هذه المرحلة، قد تحتاج إلى تجميع كل هذه الأحداث والإجراءات من خلال إنشاء فئة Notification خاصة بك للحفاظ على وضوح الرمز البرمجي، على الرغم من أنّ هذا الأمر خارج نطاق هذا الدليل التعليمي.