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

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

// 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' في المواضيع". هذه القيمة غير حسّاسة لحالة الأحرف.

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

الخيارات
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، يتم تنشيط تطبيق عميل غير نشط، ويتم إرسال الرسالة من خلال أسماء نقاط الوصول (APN) كإشعار صامت وليس من خلال 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 الأساسية، إذا تم تسليم الرسالة من خلال أسماء نقاط الوصول (APN)، فإنّها تمثِّل حقول البيانات المخصّصة. إذا تم إرسال النص من خلال 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 آخر.
بيانات اعتماد APN غير صالحة INVALID_APNS_CREDENTIAL تعذّر إرسال رسالة مستهدفة لجهاز iOS لأنّه لم يتم تحميل مفتاح مصادقة APNs المطلوب أو انتهت صلاحيته. تحقق من صحة بيانات اعتماد التطوير والإنتاج.
تعذّرت المصادقة AUTHENTICATION_FAILED تعذّرت المصادقة باستخدام خدمات الإشعارات الفورية الخارجية. تحقّق مما إذا كنت تستخدم الشهادات الصحيحة لرسائل Web Push.

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

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

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

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

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

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

تحدد هذه المعلمة الشخص الذي أرسل الرسالة.

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

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

إرسال رسالة ACK

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

الجدول 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 رسالة التحكّم هذه قبل إغلاق اتصال لإجراء موازنة التحميل. مع نضوب الاتصال، لا يُسمح بإرسال المزيد من الرسائل إلى الاتصال، ولكن يستمر معالجة الرسائل الحالية في قناة الإرسال .