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

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

في ما يلي الخطوات الثلاث الرئيسية لتنفيذ الرسائل الفورية:

  1. إضافة منطق جهة العميل لإشراك مستخدم في خدمة الإرسال الفوري (أي JavaScript وواجهة المستخدم في تطبيق الويب الذي يسجّل مستخدمًا في خدمة الإرسال الفوري)
  2. طلب البيانات من واجهة برمجة التطبيقات من الخلفية أو التطبيق الذي يؤدي إلى إرسال رسالة فورية إلى جهاز المستخدم
  3. ملف JavaScript الخاص بعملية الخدمة الذي سيتلقّى "حدث إشعار فوري" عند وصول الإشعار فوريًا إلى الجهاز. يمكنك عرض إشعار من خلال JavaScript.

لنلقِ نظرة على كل خطوة من هذه الخطوات بمزيد من التفصيل.

الخطوة 1: الجانب المرتبط بالعميل

الخطوة الأولى هي "اشتراك" المستخدم في خدمة إرسال الرسائل الفورية.

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

يحتوي PushSubscription على جميع المعلومات التي نحتاجها لإرسال رسالة فورية إلى هذا المستخدم. يمكنك اعتبار هذا المعرّف "نوعًا ما" معرّفًا لجهاز هذا المستخدِم.

ويتم تنفيذ كل ذلك في JavaScript باستخدام Push API.

توافق المتصفّح

  • Chrome: 42
  • ‫Edge: 17
  • Firefox: 44
  • ‫Safari: 16

المصدر

قبل اشتراك مستخدم، عليك إنشاء مجموعة من "مفاتيح خادم التطبيقات"، والتي سنتناولها لاحقًا.

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

بعد اشتراك المستخدم وحصولك على PushSubscription، عليك إرسال تفاصيل PushSubscription إلى الخلفية أو الخادم. على خادمك، عليك حفظ هذا الاشتراك في قاعدة بيانات واستخدامه لإرسال رسالة فورية إلى هذا المستخدم.

تأكَّد من إرسال PushSubscription إلى الخلفية.

الخطوة 2: إرسال رسالة فورية

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

إليك بعض الأسئلة التي قد تطرحها على نفسك:

  • ما هي خدمة الإشعارات الفورية؟
  • كيف تبدو واجهة برمجة التطبيقات؟ هل هو تنسيق JSON أو XML أو تنسيق آخر؟
  • ما هي الإجراءات التي يمكن لواجهة برمجة التطبيقات تنفيذها؟

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

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

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

للحصول على عنوان URL المناسب لتشغيل رسالة فورية (أي عنوان URL لخدمة الدفع الفوري)، ما عليك سوى الاطّلاع على قيمة endpoint في PushSubscription.

في ما يلي مثال على القيم التي ستحصل عليها من PushSubscription:

{
  "endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
  "keys": {
    "p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
    "auth": "tBHItJI5svbpez7KI4CCXg=="
  }
}

نقطة النهاية في هذه الحالة هي [https://random-push-service.com/some-kind-of-unique-id-1234/v2/]. ستكون خدمة الإشعارات الفورية هي 'random-push-service.com'، وستكون كل نقطة نهاية فريدة لكل مستخدم، كما هو موضّح في 'some-kind-of-unique-id-1234'. عندما تبدأ في استخدام ميزة "الدفع"، ستلاحظ هذا النمط.

وسيتم تناول المفاتيح في الاشتراك لاحقًا.

كيف تبدو واجهة برمجة التطبيقات؟

لقد ذكرتُ أنّ كل خدمة دفع إشعارات على الويب تتوقع طلب البيانات نفسه من واجهة برمجة التطبيقات. وواجهة برمجة التطبيقات هذه هي Web Push Protocol. وهو معيار IETF الذي يحدّد كيفية إجراء طلب بيانات من واجهة برمجة التطبيقات إلى خدمة الإرسال الفوري.

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

ما هي الإجراءات التي يمكن لواجهة برمجة التطبيقات تنفيذها؟

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

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

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

تتضمّن التعليمات تفاصيل مثل:

  • الوقت الذي تبقى فيه رسالة الإشعار الفوري صالحة. يحدِّد هذا الإعداد المدة التي يجب أن تبقى فيها الرسالة في "قائمة الانتظار" قبل إزالتها وعدم تسليمها.

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

  • أدخِل اسم "موضوع" لرسالة فورية، ما سيؤدي إلى استبدال أي رسالة في انتظار المراجعة بهذه الرسالة الجديدة.

عندما يريد خادمك إرسال رسالة دفع، يُرسل طلبًا لبروتوكول دفع الويب إلى خدمة دفع.

الخطوة 3: إرسال الحدث إلى جهاز المستخدم

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

  1. يصبح الجهاز متصلاً بالإنترنت وتُسلّم خدمة الإرسال الفوري الرسالة.
  2. تنتهي صلاحية الرسالة. في هذه الحالة، تزيل خدمة الإرسال الفوري الرسالة من "قائمة الانتظار" ولن يتم تسليمها مطلقًا.

عندما تُرسِل خدمة الإشعارات الفورية رسالة، سيتلقّى المتصفّح الرسالة ويفكّ تشفير أي data ويُرسِل حدث push في الخدمة العاملة.

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

يمكنك تنفيذ أي مهام في الخلفية داخل حدث "push" الخاص بعامل الخدمة. يمكنك إجراء مكالمات إحصاءات وتخزين الصفحات مؤقتًا بلا إنترنت وعرض الإشعارات.

عندما يتم إرسال رسالة فورية من خدمة إرسال الرسائل الفورية إلى جهاز المستخدم، يتلقّى عامل الخدمة حدث إرسال رسالة فورية.

هذه هي العملية الكاملة للرسائل الفورية.

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

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