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

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

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

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

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

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

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

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

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

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

الوضع الحالي

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

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

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

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

عرض توضيحي

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

لقطة شاشة لتطبيق الويب التجريبي "عوامل تشغيل الإشعارات"
يؤدي الإشعار إلى بدء الإصدار التجريبي.

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

لقد صمم فريق 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 وأطلِعنا على مكان استخدامك للميزة وطريقة استخدامك لها.

وصلات مساعدة

الشكر والتقدير

نفَّذ ريتشارد كونول ميزة "عوامل تشغيل الإشعارات"، وكتب بيتر بيفيرلو الشرح، بمساهمة من ريتشارد. راجع المقال كلّ من: جو ميديل وبيت ليبيه، بالإضافة إلى ريتشارد وبيت. الصورة الرئيسية من عند Lukas Blazek على Unsplash