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

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

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

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

تم تسجيل حدث إشعار مجدوَل في لوحة "الإشعارات" ضمن "أدوات مطوّري البرامج في 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