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

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

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

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

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

الخطوة 1: من جهة العميل

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

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

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

ويتم كل ذلك بلغة JavaScript من خلال Push API.

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

  • 42
  • 17
  • 44
  • 16

المصدر

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

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

بعد اشتراك المستخدم والحصول على 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. إنه معيار مجموعة مهندسي شبكة الإنترنت (IETF) يحدد كيفية إجراء طلب بيانات من واجهة برمجة التطبيقات إلى خدمة دفع.

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

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

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

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

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

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

  • مدة البقاء للرسالة الفورية. يحدد هذا المدة المدة التي يجب فيها وضع الرسالة في قائمة الانتظار قبل إزالتها أو تسليمها.

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

  • امنح رسالة فورية اسمًا "موضوعًا" ليتم استبدال أي رسالة معلّقة بهذه الرسالة الجديدة.

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

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

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

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

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

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

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

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

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

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

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