واجهة برمجة التطبيقات لعوامل تشغيل الإشعارات

تتيح لك عوامل تشغيل الإشعارات جدولة الإشعارات المحلية التي لا تتطلب اتصالاً بالشبكة، ما يجعلها مثالية لحالات الاستخدام مثل تطبيقات التقويم.

ما هي عوامل تشغيل الإشعارات؟

يمكن لمطوّري البرامج على الويب عرض الإشعارات باستخدام واجهة برمجة تطبيقات إشعارات الويب. وغالبًا ما تُستخدم هذه الميزة مع Push API لإبلاغ المستخدم بالمعلومات الحسّاسة للوقت، مثل أحداث الأخبار العاجلة أو الرسائل المُستلَمة. ويتم عرض الإشعارات عن طريق تشغيل JavaScript على جهاز المستخدم.

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

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

حالات الاستخدام

يمكن لتطبيقات التقويم استخدام مشغلات الإشعارات المستندة إلى الوقت لتذكير المستخدم بالاجتماعات القادمة. قد يكون نظام الإشعارات الافتراضي لتطبيق التقويم هو عرض أول إشعار تنبيه قبل ساعة واحدة من الاجتماع ثم إشعار آخر أكثر إلحاحًا قبل خمس دقائق من الموعد المحدد.

قد تُذكّر شبكة تلفزيونية المستخدمين بأنّ برنامجهم التلفزيوني المفضَّل على وشك البدء أو أنّ البث المباشر لمؤتمر على وشك البدء.

يمكن لمواقع تحويل المنطقة الزمنية أن تستخدم مشغلات الإشعارات المستندة إلى الوقت للسماح لمستخدميها بجدولة المنبهات لعقد مؤتمرات هاتفية أو مكالمات فيديو.

الوضع الحالي

الخطوة الحالة
1- إنشاء شرح مكتمل
‫2. إنشاء مسودة أولية للمواصفات Not started
3- اجمع الملاحظات والآراء وتكرار الجوانب الإيجابية في التصميم. قيد التقدّم
‫4. مرحلة التجربة والتقييم مكتملة
5- الإطلاق Not started

كيفية استخدام عوامل تشغيل الإشعارات

التفعيل من خلال about://flags

لتجربة واجهة برمجة التطبيقات Notification Triggers API على الجهاز بدون استخدام رمز مميَّز خاص بالتجربة المصدر، يمكنك تفعيل علامة #enable-experimental-web-platform-features في about://flags.

رصد الميزات

يمكنك معرفة ما إذا كان المتصفّح متوافقًا مع عوامل تشغيل الإشعارات من خلال التحقّق من توفّر السمة showTrigger:

if ('showTrigger' in Notification.prototype) {
  /* Notification Triggers supported */
}

جدولة إشعار

تتشابه جدولة الإشعار مع عرض إشعار فوري عادي، غير أنك تحتاج إلى تمرير خاصية شرط showTrigger مع الكائن TimestampTrigger كقيمة لكائن options في الإشعار.

const createScheduledNotification = async (tag, title, timestamp) => {
  const registration = await navigator.serviceWorker.getRegistration();
  registration.showNotification(title, {
    tag: tag,
    body: 'This notification was scheduled 30 seconds ago',
    showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
  });
};

إلغاء إشعار مجدوَل

لإلغاء الإشعارات المُجدوَلة، اطلب أولاً قائمة بجميع الإشعارات التي تُطابق علامة معيّنة من خلال ServiceWorkerRegistration.getNotifications(). يجب ضبط العلامة includeTriggered لكي يتم تضمين الإشعارات المُجدوَلة في القائمة:

const cancelScheduledNotification = async (tag) => {
  const registration = await navigator.serviceWorker.getRegistration();
  const notifications = await registration.getNotifications({
    tag: tag,
    includeTriggered: true,
  });
  notifications.forEach((notification) => notification.close());
};

تصحيح الأخطاء

يمكنك استخدام لوحة إشعارات "أدوات مطوري البرامج في Chrome" لتصحيح أخطاء الإشعارات. لبدء تصحيح الأخطاء، اضغط على بدء تسجيل الأحداث بدء تسجيل الأحداث أو Control+E (Command+E على نظام التشغيل Mac). تسجِّل "أدوات مطوري البرامج في Chrome" جميع أحداث الإشعارات، بما في ذلك الإشعارات المُجدوَلة والمعروضة والمغلقة، لمدة ثلاثة أيام حتى عند إغلاق "أدوات مطوري البرامج".

تم تسجيل حدث إشعار مجدوَل في لوحة "الإشعارات" في "أدوات مطوري البرامج في Chrome" ضمن لوحة "التطبيق".
إشعار مجدوَل.
تم تسجيل حدث إشعارات معروض في لوحة "الإشعارات" في "أدوات مطوري البرامج في Chrome".
إشعار معروض.

عرض توضيحي

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

لقطة شاشة لتطبيق الويب التجريبي لميزة Notification Triggers (مشغّلات الإشعارات) على الويب
العرض التوضيحي لـ The Notification Triggers

الأمان والأذونات

صمّم فريق Chrome واجهة برمجة التطبيقات Notification Triggers API ونفّذها باستخدام المبادئ الأساسية المحددة في مقالة التحكّم في الوصول إلى ميزات النظام الأساسي الفعّال للويب، بما في ذلك إمكانية التحكّم في المستخدم والشفافية وإطار العمل. ولأنّ واجهة برمجة التطبيقات هذه تتطلّب عاملي خدمة، فإنّها تتطلّب أيضًا سياقًا آمنًا. يتطلب استخدام واجهة برمجة التطبيقات الإذن نفسه الذي تحصل عليه الإشعارات الفورية العادية.

تحكم المستخدم

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

الشفافية

على عكس واجهة برمجة التطبيقات Push API، لا تعتمد واجهة برمجة التطبيقات هذه على الشبكة، ما يعني أنّ الإشعارات المُجدوَلة يجب أن تتوفّر فيها جميع البيانات المطلوبة مسبقًا، بما في ذلك موارد الصور المُشار إليها من خلال السمات badge وicon وimage. ويعني هذا أنّه لا يمكن لمطوّر البرامج ملاحظة عرض إشعار مجدول ولا يتضمّن إيقاظ عامل الخدمة إلى أن يتفاعل المستخدم مع الإشعار. وبالتالي، ليست هناك حاليًا طريقة معروفة يمكن لمطوّر البرامج من خلالها الحصول على معلومات حول المستخدم من خلال أساليب يُحتمل أن تنتهك الخصوصية مثل البحث عن الموقع الجغرافي لعنوان IP. ويتيح هذا التصميم أيضًا للميزة الاستفادة اختياريًا من آليات الجدولة التي يوفّرها نظام التشغيل، مثل AlarmManager في Android، والتي تساعد في الحفاظ على عمر البطارية.

ملاحظات

يرغب فريق Chrome في معرفة رأيك بشأن تجاربك مع عوامل تشغيل الإشعارات.

أخبِرنا عن تصميم واجهة برمجة التطبيقات

هل هناك أي مشكلة في واجهة برمجة التطبيقات لا تعمل كما توقعت؟ أو هل هناك طرق أو خصائص مفقودة تحتاجها لتنفيذ فكرتك؟ هل لديك سؤال أو تعليق بشأن نموذج الأمان؟ يُرجى الإبلاغ عن مشكلة في المواصفات في مستودع GitHub لعوامل تشغيل الإشعارات، أو إضافة أفكارك إلى مشكلة حالية.

هل تواجه مشكلة في عملية التنفيذ؟

هل واجهت مشكلة في التنفيذ في Chrome؟ أم أن التنفيذ يختلف عن المواصفات؟ يُرجى الإبلاغ عن الخطأ على new.crbug.com. واحرص على تضمين أكبر قدر ممكن من التفاصيل، وإرشادات بسيطة لإعادة إنتاج الأمر، وضبط المكوّنات على "UI>Notifications". يعمل Glitch بشكل رائع لمشاركة عمليات إعادة إنتاج الأخطاء بسرعة وسهولة.

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

هل تخطّط لاستخدام عوامل تشغيل الإشعارات على موقعك الإلكتروني؟ ويساعدنا الدعم العام الذي تقدّمه لنا في تحديد أولويات الميزات ويُظهر لمورّدي المتصفّحات الآخرين مدى أهمية دعمهم لها. يمكنك إرسال تغريدة إلى @ChromiumDev باستخدام علامة التصنيف #NotificationTriggers وإعلامنا بمكان استخدامها وكيفية استخدامها.

وصلات مساعدة

شكر وتقدير

أطلق ريتشارد نول والنشرة التوضيحية التي كتبها بيتر بيفيرلو بالإضافة إلى مساهمات من "ريتشارد". راجع الأشخاص التالون المقالة: جو ميدلي وبيت ليبيج و ريتشارد وبيتر. صورة رئيسية من تصميم لوكاس بلازيك على Unسبلاش