لماذا لا تعمل الإشعارات الفورية عندما يكون المتصفّح مغلقًا؟
يُطرح هذا السؤال كثيرًا، ويرجع ذلك إلى حد كبير إلى وجود بعض السيناريوهات التي تجعل من الصعب فهمه.
لنبدأ بأجهزة Android. تم تصميم نظام التشغيل Android للاستماع إلى الرسائل الفورية، وعند تلقّي إحداها، يتم تنشيط تطبيق Android المناسب للتعامل مع الرسالة الفورية، بغض النظر عمّا إذا كان التطبيق مغلقًا أم لا.
ينطبق ذلك على أي متصفّح على Android، إذ سيتم تنشيط المتصفّح عند تلقّي رسالة فورية، ثم سينشّط المتصفّح مشغّل الخدمات ويرسل حدث الإشعار الفوري.
على أنظمة تشغيل أجهزة الكمبيوتر المكتبي، يكون الأمر أكثر دقة وأسهل في الشرح على نظام التشغيل Mac OS X لأنّ هناك مؤشرًا مرئيًا يساعد في شرح السيناريوهات المختلفة.
على نظام التشغيل Mac OS X، يمكنك معرفة ما إذا كان البرنامج قيد التشغيل أم لا من خلال علامة تحت رمز التطبيق في شريط التطبيقات.
إذا قارنت بين رمزَي Chrome في شريط الإرساء التالي، ستلاحظ أنّ الرمز على اليمين قيد التشغيل، كما هو موضّح في العلامة أسفل الرمز، في حين أنّ Chrome على اليسار غير قيد التشغيل، وبالتالي لا تظهر العلامة تحته.
في سياق تلقّي رسائل فورية على الكمبيوتر المكتبي، ستتلقّى رسائل عندما يكون المتصفّح قيد التشغيل، أي تظهر العلامة أسفل الرمز.
هذا يعني أنّه يمكن ألّا تكون هناك أي نوافذ مفتوحة في المتصفّح، ومع ذلك ستتلقّى رسالة فورية في مقدّم الخدمة، لأنّ المتصفّح يعمل في الخلفية.
الحالة الوحيدة التي لن يتم فيها تلقّي إشعار فوري هي عندما يكون المتصفّح مغلقًا تمامًا، أي عندما لا يكون قيد التشغيل على الإطلاق (بدون علامة). وينطبق الأمر نفسه على نظام التشغيل Windows، على الرغم من أنّه من الصعب تحديد ما إذا كان Chrome يعمل في الخلفية أم لا.
كيف يمكنني فتح تطبيق الويب على الشاشة الرئيسية في وضع ملء الشاشة من خلال إشعار فوري؟
في متصفّح Chrome لنظام Android، يمكن إضافة تطبيق ويب إلى الشاشة الرئيسية، وعند فتح تطبيق الويب من الشاشة الرئيسية، يمكن تشغيله في وضع ملء الشاشة بدون شريط عناوين URL، كما هو موضّح أدناه.
للحفاظ على اتساق هذه التجربة، يريد المطورون أن تفتح الإشعارات التي تم النقر عليها تطبيق الويب في وضع ملء الشاشة أيضًا.
نفّذ Chrome هذا الإجراء "نوعًا ما"، ولكن قد تجد أنّه غير موثوق به ويصعب التعامل معه. في ما يلي تفاصيل التنفيذ ذات الصلة:
هذا يعني أنّه ما لم يزور المستخدم موقعك الإلكتروني من خلال رمز الشاشة الرئيسية بشكل منتظم، سيتم فتح الإشعارات في واجهة مستخدم المتصفّح العادية.
سنواصل العمل على حلّ هذه المشكلة.
لماذا يُعدّ هذا أفضل من WebSockets؟
يمكن تفعيل مشغّل الخدمات عندما تكون نافذة المتصفّح مغلقة. سيبقى مقبس الويب نشطًا طالما أن المتصفح وصفحة الويب مفتوحان.
ما هي العلاقة بين GCM وFCM وWeb Push وChrome؟
يتضمن هذا السؤال عددًا من الجوانب، وأسهل طريقة لشرحه هي الاطّلاع على سجلّ إشعارات الويب وChrome. (لا داعي للقلق، فهو قصير.)
كانون الأول (ديسمبر) 2014
عندما نفّذ Chrome ميزة الإشعارات الفورية على الويب لأول مرة، استخدم خدمة Google Cloud Messaging (GCM) لإرسال الإشعارات الفورية من الخادم إلى المتصفّح.
لم يكن هذا إشعار ويب. هناك بعض الأسباب التي تجعل هذا الإعداد المبكر لمتصفّح Chrome وخدمة GCM ليس إشعارات فورية "حقيقية" على الويب.
- تتطلّب خدمة GCM من المطوّرين إعداد حساب على Google Developers Console.
- احتاج Chrome وGCM إلى رقم تعريف خاص للمُرسِل تتم مشاركته من خلال تطبيق ويب ليتمكّنا من إعداد الرسائل بشكل صحيح.
- قبلت خوادم GCM طلب بيانات من واجهة برمجة التطبيقات مخصّصًا لم يكن معيارًا للويب.
تموز (يوليو) 2016
في تموز (يوليو)، تم طرح ميزة جديدة في الإشعارات الفورية على الويب، وهي "مفاتيح خادم التطبيق" (أو VAPID، كما تُعرف المواصفات). عندما أضاف Chrome إمكانية استخدام واجهة برمجة التطبيقات الجديدة هذه، استخدم خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" (المعروفة أيضًا باسم FCM) بدلاً من GCM كخدمة مراسلة. هذا مهم لعدة أسباب:
- لا يتطلّب Chrome ومفاتيح خادم التطبيقات إعداد أي نوع من المشاريع مع Google أو Firebase. ستعمل الميزة تلقائيًا.
- تتيح خدمة FCM استخدام بروتوكول الإشعارات الفورية على الويب، وهو واجهة برمجة التطبيقات التي ستتيحها جميع خدمات الإشعارات الفورية على الويب. يعني ذلك أنّه بغض النظر عن خدمة الإشعارات الفورية التي يستخدمها المتصفّح، ما عليك سوى تقديم الطلب نفسه وسيتم إرسال الرسالة.
لماذا يربكك اليوم؟
هناك قدر كبير من الارتباك الآن بعد أن تمت كتابة المحتوى حول موضوع دفع الويب، يشير الكثير منها إلى GCM أو FCM. إذا كان المحتوى يشير إلى GCM، من الأفضل التعامل معه على أنّه محتوى قديم أو يركّز كثيرًا على Chrome. (أنا مذنب في القيام بذلك في عدد من المشاركات القديمة.)
بدلاً من ذلك، يمكنك اعتبار إشعارات الويب الفورية تتألف من متصفّح يستخدم خدمة إشعارات فورية لإدارة إرسال الرسائل وتلقّيها، حيث تقبل خدمة الإشعارات الفورية طلب "بروتوكول إشعارات الويب الفورية". إذا فكرت في هذه المصطلحات، يمكنك تجاهل المتصفح وخدمة الإشعارات الفورية التي يستخدمها والبدء في العمل.
تمت كتابة هذا الدليل للتركيز على النهج المعتاد لإشعارات الويب الفورية، ويتجاهل أي شيء آخر عن قصد.
تتوفّر في Firebase حزمة JavaScript SDK. ما هي هذه الميزة وما أهميتها؟
بالنسبة إلى من عثروا على حزمة تطوير البرامج (SDK) الخاصة بالويب في Firebase ولاحظوا أنّها تتضمّن واجهة برمجة تطبيقات للمراسلة في JavaScript، قد يتساءلون عن مدى اختلافها عن الإشعارات الفورية على الويب.
تستخدم حزمة تطوير البرامج (SDK) للمراسلة (المعروفة باسم حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" بلغة JavaScript) بعض الحيل وراء الكواليس لتسهيل تنفيذ الإشعارات الفورية على الويب.
- بدلاً من القلق بشأن
PushSubscriptionوحقوله المختلفة، عليك فقط القلق بشأن رمز FCM المميّز (سلسلة). - باستخدام الرموز المميّزة لكل مستخدم، يمكنك استخدام واجهة برمجة التطبيقات FCM API الخاصة لتشغيل رسائل الإشعارات الفورية. لا تتطلّب واجهة برمجة التطبيقات هذه تشفير الحمولة. يمكنك إرسال حمولة نص عادي في نص طلب POST.
- تتيح واجهة برمجة التطبيقات الخاصة بخدمة FCM استخدام ميزات مخصّصة، مثل مواضيع FCM (تعمل أيضًا على الويب، على الرغم من أنّها غير موثّقة بشكل جيد).
- أخيرًا، تتوافق خدمة FCM مع أجهزة Android وiOS والويب، لذا يسهل على بعض الفِرق استخدامها في المشاريع الحالية.
يستخدم هذا الإجراء ميزة "الإشعارات الفورية على الويب" في الخلفية، ولكن هدفه هو إخفاء تفاصيلها.
كما ذكرت في السؤال السابق، إذا كنت تعتبر إشعارات الويب مجرد متصفح وخدمة إشعارات، فيمكنك اعتبار حزمة تطوير البرامج (SDK) للمراسلة في Firebase كمكتبة لتبسيط تنفيذ إشعارات الويب.
الخطوات التالية
- نظرة عامة على الإشعارات الفورية على الويب
- طريقة عمل الإشعارات الفورية
- الاشتراك في قناة مستخدم
- تجربة المستخدم في ما يتعلّق بالأذونات
- إرسال الرسائل باستخدام مكتبات Web Push
- بروتوكول Web Push
- التعامل مع أحداث الإشعارات الفورية
- عرض إشعار
- سلوك الإشعارات
- أنماط الإشعارات الشائعة
- الأسئلة الشائعة حول الإشعارات الفورية
- المشاكل الشائعة والإبلاغ عن الأخطاء