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

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

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

يمكن لمطوّري الويب عرض الإشعارات باستخدام 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