نظرة عامة على الإشعارات الفورية

نظرة عامة على الإشعارات الفورية والأسباب التي قد تؤدي إلى استخدامها وآلية عملها

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

تمكنك رسائل الدفع من لفت انتباه المستخدمين إلى المعلومات حتى عند عدم استخدام موقع الويب لديك. ويُطلق عليها اسم push لأنه يمكنك "إرسال" المعلومات إلى المستخدمين حتى عندما لا يكونون نشطين. قارن تكنولوجيا الدفع مع تكنولوجيا السحب لفهم هذا المفهوم بشكل أفضل.

تقدم الإشعارات كميات صغيرة من المعلومات للمستخدم. يمكن لمواقع الويب استخدام الإشعارات لإخبار المستخدمين عن الأحداث أو الإجراءات المهمة والحساسة من حيث التوقيت التي يحتاج المستخدم إلى اتخاذها. يختلف شكل الإشعارات ومضمونها من منصة إلى أخرى:

أمثلة على الإشعارات على نظامَي التشغيل macOS وAndroid
أمثلة على الإشعارات على نظامَي التشغيل macOS وAndroid

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

لماذا يُنصح باستخدام الإشعارات الفورية؟

  • بالنسبة إلى المستخدمين، تشكّل الإشعارات الفورية طريقة لتلقّي معلومات في الوقت المناسب وذات صلة ودقيقة.
  • بالنسبة إليك (مالك موقع إلكتروني)، تُعدّ الإشعارات الفورية طريقة لزيادة تفاعل المستخدمين.

كيف تعمل الإشعارات الفورية؟

بشكلٍ عام، تتمثل الخطوات الرئيسية لتنفيذ الإشعارات الفورية في:

  1. إضافة منطق العميل لتطلب من المستخدم الإذن لإرسال إشعارات فورية، ثم إرسال معلومات معرّف العميل إلى خادمك لتخزينها في قاعدة بيانات.
  2. إضافة منطق الخادم لإرسال الرسائل إلى أجهزة العميل
  3. إضافة منطق العميل لاستلام الرسائل التي تم إرسالها إلى الجهاز وعرضها كإشعارات.

يشرح الجزء المتبقي من هذه الصفحة هذه الخطوات بمزيد من التفصيل.

الحصول على إذن لإرسال إشعارات فورية

أولاً، يجب أن يحصل موقعك الإلكتروني على إذن المستخدم لإرسال الإشعارات الفورية. يجب أن يتم تفعيل هذه الميزة من خلال إيماءة المستخدم، مثل النقر على زر نعم بجانب طلب Do you want to receive push notifications?. بعد هذا التأكيد، يمكنك الاتصال بالرقم Notification.requestPermission(). من المحتمل أن يوفر نظام التشغيل أو المتصفح على جهاز المستخدم نوعًا من واجهة المستخدم لتأكيد رغبة المستخدم رسميًا في تفعيل الإشعارات الفورية. تختلف واجهة المستخدم هذه باختلاف الأنظمة الأساسية.

إشراك العميل في الإشعارات الفورية

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

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

الحصول على إذن لإرسال رسائل فورية الحصول على اشتراك Push Subscription. قم بإرسال
Push Subscription إلى خادمك.

إرسال رسالة فورية

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

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

عادةً ما يمكنك إجراء طلب بروتوكول الدفع على الويب من خلال خادم تتحكّم فيه. بالطبع، لا يحتاج خادمك إلى إنشاء طلب خدمة الويب الأولي بنفسه. وتتوفر مكتبات يمكنها معالجة هذا الأمر، مثل web-push-libs. لكن الآلية الأساسية هي طلب خدمة ويب عبر HTTP.

يرسل الخادم طلب بروتوكول الإرسال على الويب إلى خدمة الإرسال وترسل هذه الخدمة إلى الرسالة إلى جهاز المستخدم.

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

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

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

{
  "endpoint": "https://fcm.googleapis.com/fcm/send/c1KrmpTuRm…",
  "expirationTime": null,
  "keys": {
    "p256dh": "BGyyVt9FFV…",
    "auth": "R9sidzkcdf…"
  }
}

نطاق endpoint هو في الأساس خدمة الدفع. مسار endpoint هو معلومات معرّف العميل التي تساعد خدمة الإرسال في تحديد العميل الذي تريد إرسال الرسالة إليه بالضبط.

يتم استخدام keys للتشفير، وسيتم شرحه في ما يلي.

تشفير الرسالة الفورية

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

التوقيع على طلبات بروتوكول الدفع على الويب

توفر الخدمة الفورية طريقة لمنع أي شخص آخر من إرسال رسائل إلى المستخدمين. من الناحية الفنية، لا يتعين عليك تنفيذ ذلك، إلا أن أسهل عملية تنفيذ على Chrome تتطلبها. هذه الميزة اختيارية في Firefox. قد تطلبه المتصفحات الأخرى في المستقبل.

يتضمن سير العمل هذا مفتاحًا خاصًا ومفتاحًا عامًا فريدين لتطبيقك. تتم عملية المصادقة على النحو التالي:

  • يمكنك إنشاء المفتاحَين الخاص والعام كمهمة لمرة واحدة. تُعرف مجموعة المفتاح الخاص والعام باسم مفاتيح خادم التطبيقات. قد تظهر لك أيضًا تسمى مفاتيح VAPID. VAPID هو المواصفات التي تحدد عملية المصادقة هذه.
  • عند اشتراك عميل في دفع الإشعارات من رمز JavaScript، عليك تقديم مفتاحك العام. عندما تنشئ خدمة الدفع endpoint للجهاز، تربط المفتاح العام المتوفّر بـ endpoint.
  • عند إرسال طلب بروتوكول إرسال بيانات الويب، يمكنك توقيع بعض معلومات JSON باستخدام مفتاحك الخاص.
  • عندما تتلقّى خدمة الدفع طلب بروتوكول إرسال البيانات على الويب، فإنّها تستخدم المفتاح العام المخزّن لمصادقة المعلومات الموقَّعة. إذا كان التوقيع صالحًا، ستعرف خدمة الدفع أنّ الطلب صادر من خادم به مفتاح خاص مطابق.

تخصيص تسليم الرسالة الفورية

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

  • مدة البقاء (TTL) للرسالة، وهي تحدد المدة التي يجب أن تحاول خدمات الدفع تسليم الرسالة خلالها.
  • إلحاح الرسالة، وهو أمر مفيد في حالة المحافظة على عمر بطارية العميل من خلال عرض الرسائل ذات الأولوية العالية فقط.
  • موضوع الرسالة، والذي يستبدل أي رسائل في انتظار المراجعة للموضوع نفسه بآخر رسالة.

تلقّي الرسائل الفورية وعرضها كإشعارات

بعد إرسال طلب بروتوكول الإرسال على الويب إلى خدمة الإرسال، تحتفظ هذه الخدمة بطلبك في قائمة الانتظار إلى أن يقع أحد الأحداث التالية:

  1. يدخل العميل إلى الإنترنت وتُسلِّم خدمة الإرسال الرسالة الفورية.
  2. تنتهي صلاحية الرسالة.

عندما يتلقّى متصفّح العميل رسالة مدفوعة، فإنّه يفك تشفير بيانات هذه الرسائل ويُرسِل حدث push إلى عامل الخدمة. مشغّل الخدمات هو في الأساس رمز JavaScript يمكن تشغيله في الخلفية، حتى عندما لا يكون موقعك الإلكتروني مفتوحًا أو مغلقًا، في معالج أحداث push لدى مشغّل الخدمات، يمكنك استدعاء ServiceWorkerRegistration.showNotification() لعرض المعلومات كإشعار.

تصل الرسالة على الجهاز. ينشّط المتصفح مشغّل الخدمات. تم إرسال حدث الدفع.

الخطوات التالية

الدروس التطبيقية حول الترميز