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

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

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

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

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

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

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

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

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

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

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

  • Chrome: 42
  • الحافة: 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 هذا عندما يكون المتصفّح مغلقًا. لدى مشغّل الخدمات أيضًا واجهات برمجة تطبيقات، مثل الإشعارات الفورية، وهي غير متوفرة في صفحة الويب (أي واجهات برمجة التطبيقات غير المتوفرة من النص البرمجي لمشغّل الخدمات).

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

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

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

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

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