بروتوكول XMPP للمراسلة عبر السحابة الإلكترونية من Firebase

يوفّر هذا المستند مرجعًا لبنية XMPP المستخدَمة لنقل الرسائل بين خادم التطبيق وتطبيقات العميل وFirebase Cloud Messaging (خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"). يجب أن يتصل خادم التطبيق بنقطتَي النهاية التاليتَين:

// Production
fcm-xmpp.googleapis.com:5235

// Testing
fcm-xmpp.googleapis.com:5236

تندرج المَعلمات وال options المتاحة ضمن الفئات التالية:

بنية الرسائل الواردة

يقدّم هذا القسم بنية إرسال الرسائل إلى أسفل السلسلة.

رسائل XMPP للنقل (بتنسيق JSON)

يسرد الجدول التالي الاستهدافات والخيارات وحمولة رسائل XMPP JSON.

الجدول 1: الاستهدافات والخيارات وحمولة رسائل XMPP في الاتجاه من العميل إلى الخادم (بتنسيق JSON)

المَعلمة الاستخدام الوصف
الاستهداف
to اختياري، سلسلة

تحدّد هذه المَعلمة مستلِم الرسالة.

يمكن أن تكون القيمة عبارة عن رمز تسجيل جهاز أو مفتاح إشعار لمجموعة أجهزة أو موضوع واحد (يسبقه /topics/). لإرسال الإشعار إلى مواضيع متعددة، استخدِم المَعلمة condition.

condition اختياري، سلسلة

تحدّد هذه المَعلمة تعبيرًا منطقيًا للشروط التي تحدد هدف الرسالة.

الشرط المتوافق: الموضوع، بتنسيق "‎'yourTopic' in topics". هذه القيمة غير حسّاسة لحالة الأحرف.

عوامل التشغيل المسموح بها: && و|| يمكن استخدام عاملَي حسابٍ كحدّ أقصى في كل رسالة موضوع.

الخيارات
message_id مطلوب، سلسلة

تحدِّد هذه المَعلمة رسالة بشكل فريد في اتصال XMPP.

collapse_key اختياري، سلسلة

تحدد هذه المَعلمة مجموعة من الرسائل (مثلاً، باستخدام collapse_key: "Updates Available") التي يمكن تجميعها بحيث يتم إرسال الرسالة الأخيرة فقط عند استئناف الإرسال. ويهدف ذلك إلى تجنُّب إرسال عددٍ كبير جدًا من الرسائل نفسها عندما يعود الجهاز إلى الاتصال بالإنترنت أو يخرج من وضع السكون.

لا يمكن ضمان ترتيب إرسال الرسائل.

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

priority اختياري، سلسلة

لضبط أولوية الرسالة. القيم الصالحة هي "عادي" و "مرتفع". على منصات Apple، تتوافق هذه الإعدادات مع أولويتَي APN‏ 5 و10.

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

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

content_available اختياري، منطقي

على منصات Apple، استخدِم هذا الحقل لتمثيل content-available في حمولة APNs. عند إرسال إشعار أو رسالة وضبط هذا الخيار على true، يتم تنشيط تطبيق العميل غير النشط، ويتم إرسال الرسالة من خلال APNs كإشعار صامت وليس من خلال FCM. يُرجى العِلم أنّه لا يمكن ضمان تسليم الإشعارات الصامتة في بروتوكول APN، ويمكن أن تعتمد على عوامل مثل إشعال المستخدم "وضع الطاقة المنخفضة" وإغلاق التطبيق بالقوة وما إلى ذلك. على نظام التشغيل Android، توقِف رسائل البيانات التطبيق تلقائيًا. لا تتوفّر هذه الميزة حاليًا على متصفّح Chrome.

mutable_content اختياري، منطقي بتنسيق JSON

على منصات Apple، استخدِم هذا الحقل لتمثيل mutable-content في الحمولة في APNs. عند إرسال إشعار وضبط هذا الخيار على true، يمكن تعديل محتوى الإشعار قبل عرضه، باستخدام إضافة تطبيق "خدمة الإشعارات". سيتم تجاهل هذه المَعلمة على Android والويب.

time_to_live اختياري، رقم

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

dry_run اختياري، منطقي

عند ضبط هذه المَعلمة على true، يُتاح للمطوّرين اختبار طلب بدون إرسال رسالة فعليًا.

ستكون القيمة التلقائية false.

حمولة البيانات
data اختياري، عنصر

تحدِّد هذه المَعلمة أزواج المفاتيح والقيم لحمولة الرسالة.

على سبيل المثال، مع data:{"score":"3x1"}:

على منصات Apple، إذا تم إرسال الرسالة من خلال APNs، فإنّها تمثّل حقول البيانات المخصّصة. إذا تم تسليمه من خلال FCM، يتم تمثيله كقاموس قيم مفاتيح في AppDelegate application:didReceiveRemoteNotification:.

على نظام التشغيل Android، يؤدي ذلك إلى إنشاء عنصر إضافي للنشاط باسم score وقيمة السلسلة 3x1.

يجب ألّا يكون المفتاح كلمة محجوزة ("from" أو "message_type" أو أي كلمة تبدأ بحرف "google" أو "gcm"). لا تستخدِم أيًا من الكلمات المحدّدة في هذا الجدول (مثل collapse_key).

يُنصح باستخدام القيم في أنواع السلاسل. عليك تحويل القيم في الكائنات أو أنواع البيانات الأخرى غير السلاسل (مثل الأعداد الصحيحة أو القيم المنطقية) إلى سلاسل.

notification اختياري، عنصر تحدّد هذه المَعلمة أزواج المفاتيح والقِيم المحدّدة مسبقًا والتي تظهر للمستخدمين في حمولة الإشعار. اطّلِع على تفاصيل التوافق مع الحمولة في الإشعار. لمزيد من المعلومات حول خيارات رسالة الإشعار ورسالة البيانات، يُرجى الاطّلاع على أنواع الرسائل. في حال توفّر حمولة إشعار أو ضبط الخيار content_available على true لرسالة مُرسَلة إلى جهاز Apple ، يتم إرسال الرسالة من خلال APNs، وإلا يتم إرسالها من خلال FCM.

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

تسرد الجداول التالية مفاتيح المحدّدة مسبقًا المتوفّرة لإنشاء رسائل الإشعارات لمنصّات Apple وAndroid.

الجدول 2(أ): Apple - مفاتيح رسائل الإشعارات

المَعلمة الاستخدام الوصف
title اختياري، سلسلة

عنوان الإشعار.

لا يظهر هذا الحقل على الهواتف والأجهزة اللوحية.

body اختياري، سلسلة

النص الأساسي للإشعار

sound اختياري، سلسلة

الصوت الذي سيتم تشغيله عندما يتلقّى الجهاز الإشعار

سلسلة تحدّد ملفات الصوت في الحِزمة الرئيسية لتطبيق العميل أو في مجلد Library/Sounds لحاويات بيانات التطبيق اطّلِع على مكتبة مطوّري تطبيقات iOS للحصول على مزيد من المعلومات.

badge اختياري، سلسلة

قيمة الشارة على رمز التطبيق في الشاشة الرئيسية

إذا لم يتم تحديدها، لن يتم تغيير الشارة.

في حال ضبطها على 0، تتم إزالة الشارة.

click_action اختياري، سلسلة

الإجراء المرتبط بنقرة أحد المستخدِمين على الإشعار

يتوافق مع category في حمولة APNs.

subtitle اختياري، سلسلة

العنوان الفرعي للإشعار

body_loc_key اختياري، سلسلة

مفتاح سلسلة النص في موارد سلاسل التطبيق لاستخدامه في تعريب نص النص إلى اللغة المحوَّلة حاليًا للمستخدم

يتوافق مع loc-key في حمولة APNs.

اطّلِع على مرجع مفتاح الحمولة و نقل محتوى الإشعارات عن بُعد إلى لغة أخرى للحصول على مزيد من المعلومات.

body_loc_args اختياري، مصفوفة JSON بالتنسيق السلسلة

قيم سلاسل متغيّرة لاستخدامها بدلاً من محدّدات التنسيق في body_loc_key لاستخدامها في ترجمة النص الأساسي إلى اللغة المحوَّلة حاليًا للمستخدم

يتوافق مع loc-args في حمولة APNs.

اطّلِع على مرجع مفتاح الحمولة و نقل محتوى الإشعارات عن بُعد إلى لغة أخرى للحصول على مزيد من المعلومات.

title_loc_key اختياري، سلسلة

مفتاح سلسلة العنوان في موارد سلاسل التطبيق لاستخدامه في تعريب نص العنوان إلى اللغة المحوَّلة حاليًا للمستخدم

يتوافق مع title-loc-key في حمولة APNs.

اطّلِع على مرجع مفتاح الحمولة و نقل محتوى الإشعارات عن بُعد إلى لغة أخرى للحصول على مزيد من المعلومات.

title_loc_args اختياري، مصفوفة JSON بالتنسيق السلسلة

قيم سلاسل متغيّرة لاستخدامها بدلاً من محدّدات التنسيق في title_loc_key لاستخدامها في ترجمة نص العنوان إلى اللغة المُستخدَمة حاليًا لدى المستخدم

يتوافق مع title-loc-args في حمولة APNs.

اطّلِع على مرجع مفتاح الحمولة و نقل محتوى الإشعارات عن بُعد إلى لغة أخرى للحصول على مزيد من المعلومات.

الجدول 2(ب): Android - مفاتيح رسائل الإشعارات

المَعلمة الاستخدام الوصف
title اختياري، سلسلة

عنوان الإشعار.

body اختياري، سلسلة

النص الأساسي للإشعار

android_channel_id اختياري، سلسلة

معرّف قناة الإشعار (ميزة جديدة في Android O)

يجب أن ينشئ التطبيق قناة باستخدام معرّف القناة هذا قبل تلقّي أي إشعار باستخدامه.

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

icon اختياري، سلسلة

رمز الإشعار

تُستخدَم لضبط رمز الإشعار على myicon للمورد القابل للرسم myicon. في حال عدم إرسال هذا المفتاح في الطلب، FCM يعرض رمز مشغّل التطبيقات المحدّد في بيان تطبيقك.

sound اختياري، سلسلة

الصوت الذي سيتم تشغيله عندما يتلقّى الجهاز الإشعار

يتيح استخدام "default" أو اسم ملف لمصدر صوت مضمّن في التطبيق. يجب أن تكون ملفات الصوت متوفّرة في /res/raw/.

tag اختياري، سلسلة

المعرّف المستخدَم لاستبدال الإشعارات الحالية في درج الإشعارات

في حال عدم تحديده، ينشئ كل طلب إشعارًا جديدًا.

إذا تم تحديده وكان هناك إشعار يحمل العلامة نفسها معروضًا، سيحل الإشعار الجديد محل الإشعار الحالي في أدراج الإشعارات.

color اختياري، سلسلة

لون رمز الإشعار، مُعبَّرًا عنه بتنسيق #rrggbb

click_action اختياري، سلسلة

الإجراء المرتبط بنقرة أحد المستخدِمين على الإشعار

إذا تم تحديده، يتم تشغيل نشاط يتضمّن فلتر أهداف مطابقًا عند نقر المستخدم على الإشعار.

body_loc_key اختياري، سلسلة

مفتاح سلسلة النص في موارد سلاسل التطبيق لاستخدامه في تعريب نص النص إلى اللغة المحوَّلة حاليًا للمستخدم

اطّلِع على موارد السلاسل للحصول على مزيد من المعلومات.

body_loc_args اختياري، مصفوفة JSON بالتنسيق السلسلة

قيم سلاسل متغيّرة لاستخدامها بدلاً من محدّدات التنسيق في body_loc_key لاستخدامها في ترجمة النص الأساسي إلى اللغة المحوَّلة حاليًا للمستخدم

يمكنك الاطّلاع على التنسيق والتصميم للحصول على مزيد من المعلومات.

title_loc_key اختياري، سلسلة

مفتاح سلسلة العنوان في موارد سلاسل التطبيق لاستخدامه في تعريب نص العنوان إلى اللغة المحوَّلة حاليًا للمستخدم

اطّلِع على موارد السلاسل للحصول على مزيد من المعلومات.

title_loc_args اختياري، مصفوفة JSON بالتنسيق السلسلة

قيم سلاسل متغيّرة لاستخدامها بدلاً من محدّدات التنسيق في title_loc_key لاستخدامها في ترجمة نص العنوان إلى اللغة المُستخدَمة حاليًا لدى المستخدم

يمكنك الاطّلاع على التنسيق والتصميم للحصول على مزيد من المعلومات.

الجدول 2(ج): الويب (JavaScript) - مفاتيح رسائل الإشعارات

المَعلمة الاستخدام الوصف
title اختياري، سلسلة

عنوان الإشعار.

body اختياري، سلسلة

النص الأساسي للإشعار

icon اختياري، سلسلة

عنوان URL المراد استخدامه لرمز الإشعار.

click_action اختياري، سلسلة

الإجراء المرتبط بنقرة أحد المستخدِمين على الإشعار

يجب استخدام بروتوكول HTTPS لجميع قيم عناوين URL.

تفسير استجابة رسالة XMPP من جهة العميل

يسرد الجدول التالي الحقول التي تظهر في ردّ رسالة XMPP للاتصال بالخدمات.

الجدول 3: نص استجابة XMPP لرسالة البث من جهاز العميل

المَعلمة الاستخدام الوصف
from مطلوب، سلسلة

تحدِّد هذه المَعلمة المستخدم الذي أرسل هذا الردّ.

القيمة هي الرمز المميّز لتسجيل تطبيق العميل.

message_id مطلوب، سلسلة تحدِّد هذه المَعلمة رسالة بشكل فريد في اتصال XMPP. القيمة هي سلسلة تحدّد الرسالة المرتبطة بشكل فريد.
message_type مطلوب، سلسلة

تحدِّد هذه المَعلمة رسالة ack أو nack من FCM إلى خادم التطبيق.

إذا تم ضبط القيمة على nack، يجب أن يفحص خادم التطبيق كلاً من error وerror_description للحصول على معلومات عن الخطأ.

error اختياري، سلسلة تحدد هذه المَعلمة خطأ مرتبطًا برسالة البث. يتم ضبطه عندما يكون message_type هو nack. اطّلِع على الجدول 4 للاطّلاع على التفاصيل.
error_description اختياري، سلسلة تقدّم هذه المَعلمة معلومات وصفية عن الخطأ. يتم ضبطه عندما تكون قيمة message_type هي nack.

رموز الاستجابة للأخطاء في الرسائل الواردة

يسرد الجدول التالي رموز استجابة الخطأ للرسائل الواردة.

الجدول 4: رموز استجابة أخطاء الرسائل الواردة

خطأ رمز XMPP الإجراء المقترَح
عدم توفّر الرمز المميّز للتسجيل INVALID_JSON تأكَّد من أنّ الطلب يحتوي على رمز مميّز للتسجيل (في registration_id في رسالة نصية عادية، أو في حقل to أو registration_ids بتنسيق JSON).
تسجيل APN غير صالح INVALID_JSON بالنسبة إلى عمليات تسجيل أجهزة iOS، تأكَّد من أنّ طلب التسجيل الذي تلقّيته من العميل يحتوي على معرّف تطبيق ورمز مميّز صالحَين لخدمة APNs.
رمز تسجيل غير صالح BAD_REGISTRATION تحقّق من تنسيق الرمز المميّز للتسجيل الذي ترسله إلى الخادم. تأكَّد من أنّه يتطابق مع الرمز المميّز للتسجيل الذي يتلقّاه تطبيق العميل من التسجيل باستخدام FCM. لا تقصّ العنوان أو تُضِف إليه أحرفًا إضافية.
جهاز غير مسجَّل DEVICE_UNREGISTERED قد يتوقف رمز تسجيل حالي عن العمل في عدد من السيناريوهات، بما في ذلك:
  • إذا ألغى تطبيق العميل تسجيله في FCM
  • إذا تم إلغاء تسجيل تطبيق العميل تلقائيًا، ما قد يحدث في حال إلغاء تثبيت التطبيق من قِبل المستخدم على سبيل المثال، في نظام التشغيل iOS، إذا أبلغت APNs عن رمز APNs المميّز على أنّه غير صالح.
  • إذا انتهت صلاحية الرمز المميّز للتسجيل (على سبيل المثال، قد تقرّر Google إعادة تحميل الرموز المميّزة للتسجيل، أو انتهت صلاحية الرمز المميّز لخدمات APNs على الأجهزة).
  • إذا تم تحديث تطبيق العميل، ولكن لم يتم ضبط الإصدار الجديد لتلقّي الرسائل
في جميع هذه الحالات، عليك إزالة هذا الرمز المميّز للتسجيل من ملف برمجي التطبيق وإيقاف استخدامه لإرسال الرسائل.
المُرسِل غير متطابق SENDER_ID_MISMATCH يرتبط الرمز المميَّز للتسجيل بمجموعة معيّنة من المُرسِلين. عند تسجيل تطبيق العميل لنظام FCM، يجب أن يحدِّد المُرسِلين المسموح لهم بإرسال الرسائل. يجب استخدام أحد معرّفات المُرسِل هذه عند إرسال الرسائل إلى تطبيق العميل. وفي حال التبديل إلى مُرسِل مختلف، لن تعمل الرموز المميّزة الحالية للتسجيل.
ملف JSON غير صالح INVALID_JSON تأكَّد من أنّ رسالة JSON منسَّقة بشكل صحيح وتتضمّن حقولًا صالحة (على سبيل المثال، التأكّد من إدخال نوع البيانات الصحيح).
الرسالة كبيرة جدًا INVALID_JSON تأكَّد من أنّ إجمالي حجم بيانات الحمولة المضمّنة في الرسالة لا يتجاوز حدود FCM: 4096 بايت لمعظم الرسائل أو 2048 بايت في حالة الرسائل المرسَلة إلى المواضيع. ويشمل ذلك كلاً من المفاتيح والقيم.
مفتاح بيانات غير صالح INVALID_JSON تأكَّد من أنّ بيانات الحمولة لا تحتوي على مفتاح (مثل from gcm أو أي قيمة تبدأ بالرمز google) يستخدمه FCM داخليًا. يُرجى العِلم أنّ بعض الكلمات (مثل collapse_key) تستخدمها أيضًا FCM ولكن يُسمح بها في الحمولة، وفي هذه الحالة يتم إلغاء قيمة الحمولة بواسطة قيمة FCM.
وقت الاستبدال غير صالح INVALID_JSON تأكَّد من أنّ القيمة المستخدَمة في time_to_live هي عدد صحيح يمثّل مدّة بالثواني تتراوح بين 0 و2,419,200 (4 أسابيع).
رسالة ACK غير صالحة BAD_ACK تأكَّد من تنسيق رسالة ack بشكل صحيح قبل إعادة المحاولة. اطّلِع على الجدول 6 للاطّلاع على التفاصيل.
انتهت المهلة SERVICE_UNAVAILABLE

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

  • نفِّذ ميزة "الرقود الأسي الثنائي" في آلية إعادة المحاولة. (على سبيل المثال، إذا انتظرت ثانية واحدة قبل المحاولة الأولى، انتظِر ثانيتين على الأقل قبل المحاولة التالية، ثم أربع ثوانٍ، وهكذا). إذا كنت ترسل رسائل متعددة، يمكنك تأخير كل رسالة بشكل مستقل بمقدار عشوائي إضافي لتجنُّب تقديم طلب جديد لجميع الرسائل في الوقت نفسه.
  • يجب ضبط وقت الانتظار الأولي لإعادة المحاولة على ثانية واحدة.

ملاحظة: يُرجى العِلم أنّ المُرسِلين الذين يتسببون في حدوث مشاكل قد يتم إدراجهم في القائمة السوداء.

حدث خطأ في الخادم الداخلي INTERNAL_SERVER_
ERROR
واجه الخادم خطأً أثناء محاولة معالجة الطلب. يمكنك إعادة محاولة تنفيذ الطلب نفسه باتّباع المتطلبات الواردة في "المهلة" (راجِع الصف أعلاه).
تجاوز معدّل إرسال الرسائل على الجهاز DEVICE_MESSAGE_RATE
_EXCEEDED
معدّل الرسائل المرسَلة إلى جهاز معيّن مرتفع جدًا. قلِّل عدد الرسائل المُرسَلة إلى هذا الجهاز، ولا تحاول إرسالها إلى هذا الجهاز على الفور.
تجاوز معدّل إرسال الرسائل في Topics TOPICS_MESSAGE_RATE
_EXCEEDED
معدّل الرسائل المرسَلة إلى المشتركين في موضوع معيّن مرتفع جدًا. قلِّل عدد الرسائل المُرسَلة لهذا الموضوع، ولا تحاول إعادة الإرسال على الفور.
استنزاف الاتصال CONNECTION_DRAINING تعذّرت معالجة الرسالة لأنّ الاتصال بالإنترنت ضعيف. ويحدث ذلك لأنّFCM يحتاج بشكل دوري إلى إغلاق اتصال لإجراء موازنة التحميل. أعِد إرسال الرسالة من خلال اتصال XMPP آخر.
بيانات اعتماد APNs غير صالحة INVALID_APNS_CREDENTIAL تعذّر إرسال رسالة مستهدفة لجهاز iOS لأنّه لم يتم تحميل مفتاح مصادقة APNs المطلوب أو انتهت صلاحيته. تأكَّد من صلاحية بيانات اعتمادك المتعلّقة بالتطوير والإصدار العلني.
تعذّرت المصادقة AUTHENTICATION_FAILED تعذّرت المصادقة مع خدمات الإشعارات الفورية الخارجية. تحقّق مما إذا كنت تستخدم الشهادات الصحيحة لرسائل Web Push.

بنية الرسائل المرسَلة إلى الخادم

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

تفسير رسالة XMPP من جهة العميل

يوضّح الجدول التالي الحقول في فقرة XMPP التي أنشأهاFCM رداً على طلبات الرسائل الواردة من تطبيقات العميل.

الجدول 5: رسائل XMPP من المصدر

المَعلمة الاستخدام الوصف
from مطلوب، سلسلة

تحدِّد هذه المَعلمة مَن أرسل الرسالة.

القيمة هي الرمز المميّز لتسجيل تطبيق العميل.

category مطلوب، سلسلة تحدِّد هذه المَعلمة اسم حزمة التطبيق الخاص بتطبيق العميل الذي أرسل الرسالة.
message_id مطلوب، سلسلة تحدّد هذه المَعلمة المعرّف الفريد للرسالة.
data اختياري، سلسلة تحدِّد هذه المَعلمة أزواج المفاتيح والقيم لحمولة الرسالة.

إرسال رسالة ACK

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

الجدول 6: استجابة رسالة XMPP من المصدر

المَعلمة الاستخدام الوصف
to مطلوب، سلسلة

تحدّد هذه المَعلمة مستلِم رسالة الردّ.

يجب أن تكون القيمة رمزًا مميّزًا للتسجيل لتطبيق العميل الذي أرسل رسالة الإرسال.

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

FCM رسائل الخادم (XMPP)

هذه رسالة تم إرسالها من FCM إلى خادم تطبيق. في ما يلي الأنواع الأساسية من الرسائل التي يرسلها FCM إلى خادم التطبيق:

  • التحكّم: تشير هذه الرسائل التي يتم إنشاؤها من خلال CCS إلى أنّه يجب اتخاذ إجراء من خادم التطبيق.

يوضّح الجدول التالي الحقول المضمّنة في الرسائل التي ترسلها خدمة CCS إلى خادم التطبيق.

الجدول 7 FCM رسائل التحكّم (XMPP)

المَعلمة الاستخدام الوصف
الحقل الشائع
message_type مطلوب، سلسلة

تحدِّد هذه المَعلمة نوع الرسالة: التحكّم.

عند ضبطه على control، تتضمّن الرسالة control_type للإشارة إلى نوع رسالة التحكّم.

control_type اختياري، سلسلة

تحدِّد هذه المَعلمة نوع رسالة التحكّم المُرسَلة من FCM.

لا يُسمح حاليًا إلا بالقيمة CONNECTION_DRAINING. تُرسِل FCM رسالة التحكّم هذه قبل إغلاق اتصال لإجراء موازنة التحميل. مع نضوب الاتصال، لا يُسمح بإرسال المزيد من الرسائل إلى الاتصال، ولكن يستمر معالجة الرسائل الحالية في قناة الإرسال.