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

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

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

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

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

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

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

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

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

الجدول 1 الأهداف والخيارات والحمولة لرسائل XMPP النهائية (JSON).

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

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

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

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

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

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

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

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

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

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

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

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

ملاحظة: يُسمح بحد أقصى 4 مفاتيح مختلفة للاختصار في أي وقت. يعني ذلك يمكن لـ FCM تخزين 4 ملفات مختلفة في الوقت نفسه الرسائل لكل تطبيق عميل. إذا كنت تجاوز هذا الرقم، ليس هناك ما يضمن أي 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 في حمولة أسماء نقاط الوصول (APN). عندما يتم إرسال إشعار ويتم ضبط هذا الإعداد إلى 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. جهاز، يتم إرسال الرسالة من خلال أسماء نقاط الوصول، وإلا يتم إرسالها من خلال 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 في حمولة أسماء نقاط الوصول (APN).

عرض مرجع مفتاح حمولة البيانات أقلمة محتوى "إشعاراتك عن بُعد" للاطّلاع على مزيد من المعلومات المعلومات.

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

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

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

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

title_loc_args اختياري، مصفوفة JSON كسلسلة

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

يتطابق مع القيمة title-loc-args في حمولة أسماء نقاط الوصول (APN).

عرض مرجع مفتاح حمولة البيانات أقلمة محتوى "إشعاراتك عن بُعد" للاطّلاع على مزيد من المعلومات المعلومات.

الجدول 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 اختيارية، سلسلة تحدّد هذه المعلمة خطأ متعلقًا برسالة استلام البريد. ويتم تعيينها عندما تم nack ميزة message_type. اطّلِع على الجدول 4 للاطّلاع على التفاصيل.
error_description اختيارية، سلسلة تقدّم هذه المَعلمة معلومات وصفية عن الخطأ. تم تعيينه عندما تكون قيمة message_type هي nack.

رموز الاستجابة للأخطاء التي تحدث في مرحلة متأخرة من الوقت

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

الجدول 4 رموز الاستجابة لأخطاء رسائل البريد الإلكتروني المرسَلة.

خطأ رمز XMPP الإجراء المقترَح
الرمز المميّز للتسجيل غير متوفّر INVALID_JSON تحقق من أن الطلب يحتوي على رمز مميز للتسجيل (في registration_id في رسالة نصية عادية، أو في to أو registration_ids بتنسيق JSON).
تسجيل أسماء نقاط الوصول غير صالح 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_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 استجابةً لرسالة 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، تتضمّن الرسالة control_type للإشارة إلى نوع رسالة التحكّم.

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

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

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