يوفّر هذا المستند مرجعًا لبنية XMPP المستخدَمة لنقل الرسائل بين خادم التطبيق وتطبيقات العميل وFirebase Cloud Messaging (خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"). يجب أن يتصل خادم التطبيق بنقطتَي النهاية التاليتَين:
// Production fcm-xmpp.googleapis.com:5235 // Testing fcm-xmpp.googleapis.com:5236
تتيح لك المعلمات وتندرج ضمن الفئات التالية:
- بنية الرسائل الواردة
- رموز الاستجابة للأخطاء في رسائل أثناء البث
- بنية رسالة Upstream
- رسائل التحكّم في FCM
بنية الرسائل الواردة
يقدّم هذا القسم بنية إرسال الرسائل إلى أسفل السلسلة.
رسائل XMPP للنقل (بتنسيق JSON)
يسرد الجدول التالي الأهداف والخيارات والحمولة لملف XMPP JSON الرسائل.
المعلمة | الاستخدام | الوصف | |
---|---|---|---|
الاستهداف | |||
to |
اختيارية، سلسلة |
تحدد هذه المعلمة مُستلِم الرسالة.
ويمكن أن تكون القيمة رمزًا مميزًا لتسجيل الجهاز، أو رمز عنوان URL الخاص بمجموعة أجهزة
أو مفتاح إشعار أو موضوع واحد (يبدأ بـ
|
|
condition |
اختيارية، سلسلة | تحدد هذه المعلمة تعبيرًا منطقيًا للشروط التي يحدد هدف الرسالة. الشرط المتوافق: الموضوع، بالتنسيق "'yourTopic" في المواضيع". هذه القيمة غير حسّاسة لحالة الأحرف. عوامل التشغيل المسموح بها: |
|
الخيارات | |||
message_id |
مطلوب، سلسلة | تحدِّد هذه المَعلمة رسالة بشكل فريد في اتصال XMPP. |
|
collapse_key |
اختياري، سلسلة | تحدد هذه المَعلمة مجموعة من الرسائل (مثلاً، باستخدام
وليس هناك ما يضمن ترتيب إرسال الرسائل. ملاحظة: يُسمح بحد أقصى 4 مفاتيح مختلفة للاختصار في أي وقت. يعني ذلك يمكن لـ FCM تخزين 4 ملفات مختلفة في الوقت نفسه الرسائل لكل تطبيق عميل. إذا كنت تجاوز هذا الرقم، ليس هناك ما يضمن أي 4 مفاتيح تصغير FCM سيحتفظ به. |
|
priority |
اختيارية، سلسلة | لضبط أولوية الرسالة. القيم الصالحة هي "عادية" و"مرتفع". على منصات Apple، تتوافق هذه الإعدادات مع أولويتَي APN 5 و10. بشكل افتراضي، يتم إرسال رسائل الإشعارات بأولوية عالية، كما يتم إرسال رسائل البيانات ذات أولوية عادية. تعمل الأولوية العادية على تحسين استهلاك البطارية ويجب استخدامه ما لم يكن التسليم الفوري مطلوبًا. بالنسبة إلى الرسائل ذات الأولوية العادية، قد يتلقّى التطبيق الرسالة مع تأخُّر غير محدّد. عند إرسال رسالة ذات أولوية عالية، يتم إرسالها على الفور، ويمكن للتطبيق عرض إشعار. |
|
content_available |
اختياري، منطقية | على منصات Apple، استخدِم هذا الحقل لتمثيل |
|
mutable_content |
اختياري، منطقي بتنسيق JSON | على أنظمة Apple الأساسية، استخدم هذا الحقل لتمثيل
|
|
time_to_live |
اختياري، رقم | تحدِّد هذه المَعلمة المدة (بالثواني) التي يجب الاحتفاظ فيها بالرسالة في مساحة تخزين FCM إذا كان الجهاز غير متصل بالإنترنت. الحد الأقصى المسموح به لوقت الصلاحية هو 4 أسابيع، والقيمة التلقائية هي 4 أسابيع. لمزيد من المعلومات، يُرجى الاطّلاع على ضبط مدة صلاحية الرسالة. |
|
dry_run |
اختياري، منطقية | عند ضبط هذه المَعلمة على ستكون القيمة التلقائية |
|
حمولة البيانات | |||
data |
عنصر اختياري | تحدد هذه المعلمة أزواج المفتاح/القيمة لحمولة الرسالة. على سبيل المثال، مع على أنظمة Apple الأساسية، إذا تم تسليم الرسالة من خلال أسماء نقاط الوصول (APN)، فإنّها تمثِّل حقول البيانات المخصّصة. إذا
تم تسليمه من خلال FCM،
يتم تمثيله كقاموس قيم مفاتيح في على نظام التشغيل Android، يؤدي ذلك إلى إنشاء عنصر إضافي للنشاط باسم يجب ألا يكون المفتاح كلمة محجوزة ("from" أو "message_type" أو أي كلمة تبدأ بـ)
"google" أو "gcm"). لا تستخدم أيًا من الكلمات الواردة في هذا الجدول
(مثل يُنصح باستخدام القيم في أنواع السلاسل. عليك تحويل القيم في الكائنات أو أنواع البيانات الأخرى غير السلاسل (مثل الأعداد الصحيحة أو القيم المنطقية) إلى سلاسل. |
|
notification |
اختياري، عنصر | تحدّد هذه المَعلمة أزواج المفتاح/القيمة المحدّدة مسبقًا والتي تظهر للمستخدمين في حمولة
الإشعار. اطّلِع على تفاصيل التوافق مع الحمولة في الإشعار. لمزيد من المعلومات
حول خيارات رسالة الإشعار ورسالة البيانات، يُرجى الاطّلاع على
أنواع الرسائل. في حال توفُّر حمولة بيانات الإشعارات، أو
تم ضبط الخيار content_available على true لرسالة إلى جهاز Apple.
جهاز، يتم إرسال الرسالة من خلال أسماء نقاط الوصول، وإلا يتم إرسالها من خلال
FCM
|
إتاحة الحمولة في الإشعار
تسرد الجداول التالية مفاتيح المحدّدة مسبقًا المتوفّرة لإنشاء رسائل الإشعارات لمنصّات Apple وAndroid.
المعلمة | الاستخدام | الوصف |
---|---|---|
title |
اختياري، سلسلة |
عنوان الإشعار. لا يظهر هذا الحقل على الهواتف والأجهزة اللوحية. |
body |
اختيارية، سلسلة |
النص الأساسي للإشعار. |
sound |
اختيارية، سلسلة |
الصوت الذي سيتم تشغيله عندما يتلقّى الجهاز الإشعار.
سلسلة تحدّد ملفات الصوت في الحِزمة الرئيسية لتطبيق العميل أو في مجلد
|
badge |
اختيارية، سلسلة |
قيمة الشارة على رمز التطبيق في الشاشة الرئيسية إذا لم يتم تحديدها، لن يتم تغيير الشارة.
في حال ضبطها على |
click_action |
اختياري، سلسلة |
يشير ذلك المصطلح إلى الإجراء المرتبط بالمستخدم الذي ينقر على الإشعار.
يتوافق مع |
subtitle |
اختيارية، سلسلة |
العنوان الفرعي للإشعار. |
body_loc_key |
اختياري، سلسلة |
مفتاح سلسلة النص في موارد سلاسل التطبيق لاستخدامه في تعريب نص النص إلى اللغة المحوَّلة حاليًا للمستخدم
يتوافق مع عرض مرجع مفتاح حمولة البيانات أقلمة محتوى "إشعاراتك عن بُعد" للاطّلاع على مزيد من المعلومات المعلومات. |
body_loc_args |
اختياري، مصفوفة JSON كسلسلة |
قيم سلسلة متغيرة لاستخدامها بدلاً من محددات التنسيق في
يتطابق مع القيمة عرض مرجع مفتاح حمولة البيانات أقلمة محتوى "إشعاراتك عن بُعد" للاطّلاع على مزيد من المعلومات المعلومات. |
title_loc_key |
اختياري، سلسلة |
مفتاح سلسلة العنوان في موارد سلاسل التطبيق لاستخدامه في تعريب نص العنوان إلى اللغة المحوَّلة حاليًا للمستخدم
يتوافق مع يمكنك الاطّلاع على مرجع مفتاح الحمولة و نقل محتوى الإشعارات عن بُعد إلى لغة أخرى للحصول على مزيد من المعلومات. |
title_loc_args |
اختياري، مصفوفة JSON كسلسلة |
قيم سلاسل متغيّرة لاستخدامها بدلاً من محدّدات التنسيق في
يتطابق مع القيمة عرض مرجع مفتاح حمولة البيانات أقلمة محتوى "إشعاراتك عن بُعد" للاطّلاع على مزيد من المعلومات المعلومات. |
المعلمة | الاستخدام | الوصف |
---|---|---|
title |
اختياري، سلسلة |
عنوان الإشعار. |
body |
اختيارية، سلسلة |
النص الأساسي للإشعار. |
android_channel_id |
اختياري، سلسلة |
معرّف قناة الإشعار (ميزة جديدة في Android O) يجب أن ينشئ التطبيق قناة باستخدام معرّف القناة هذا قبل ظهور أي إشعار يتضمّن معرّف القناة هذا. المستلمة. إذا لم ترسِل معرّف القناة هذا في الطلب، أو إذا لم يكن معرّف القناة الذي تم تقديمه قد تم إنشاؤه بعد من خلال التطبيق، سيستخدم FCM معرّف القناة المحدّد في ملف بيان التطبيق. |
icon |
اختيارية، سلسلة |
رمز الإشعار.
يتم ضبط رمز الإشعار على |
sound |
اختياري، سلسلة |
الصوت الذي سيتم تشغيله عندما يتلقّى الجهاز الإشعار
يتيح استخدام |
tag |
اختيارية، سلسلة |
المعرّف المستخدَم لاستبدال الإشعارات الحالية في درج الإشعارات في حال عدم تحديد قيمة، سينشئ كل طلب إشعارًا جديدًا. إذا تم تحديده وكان هناك إشعار يحمل العلامة نفسها معروضًا، سيحل الإشعار الجديد محل الإشعار الحالي في أدراج الإشعارات. |
color |
اختيارية، سلسلة |
لون رمز الإشعار، والذي يتم التعبير عنه بالتنسيق |
click_action |
اختياري، سلسلة |
يشير ذلك المصطلح إلى الإجراء المرتبط بالمستخدم الذي ينقر على الإشعار. وفي حالة تحديد نشاط معيّن، يتم تشغيله بفلتر أهداف مطابق عند ينقر المستخدم على الإشعار. |
body_loc_key |
اختيارية، سلسلة |
يشير هذا المصطلح إلى مفتاح السلسلة النصية في موارد السلسلة الخاصة بالتطبيق. ترجمة النص الأساسي إلى أقلمة المستخدم الحالية. عرض موارد السلسلة لمزيد من المعلومات. |
body_loc_args |
اختياري، مصفوفة JSON كسلسلة |
قيم سلاسل متغيّرة لاستخدامها بدلاً من محدّدات التنسيق في
عرض التنسيق والنمط للاطّلاع على مزيد من المعلومات |
title_loc_key |
اختياري، سلسلة |
مفتاح سلسلة العنوان في موارد سلسلة التطبيق التي يمكن استخدامها ترجمة نص العنوان بما يناسب الأقلمة الحالية للمستخدم. اطّلِع على موارد السلاسل للحصول على مزيد من المعلومات. |
title_loc_args |
اختياري، مصفوفة JSON كسلسلة |
قيم سلاسل متغيّرة لاستخدامها بدلاً من محدّدات التنسيق في
يمكنك الاطّلاع على التنسيق والتصميم للحصول على مزيد من المعلومات. |
المعلمة | الاستخدام | الوصف |
---|---|---|
title |
اختياري، سلسلة |
عنوان الإشعار. |
body |
اختيارية، سلسلة |
النص الأساسي للإشعار. |
icon |
اختيارية، سلسلة |
عنوان URL الذي سيتم استخدامه لرمز الإشعار. |
click_action |
اختيارية، سلسلة |
الإجراء المرتبط بنقرة أحد المستخدِمين على الإشعار يجب استخدام بروتوكول HTTPS لجميع قيم عناوين URL. |
تفسير رد على رسالة XMPP قبل استلام الرسالة
يستعرض الجدول التالي الحقول التي تظهر في رد رسالة XMPP التي تظهر في مرحلة متأخرة من الوقت.
المعلمة | الاستخدام | الوصف |
---|---|---|
from |
مطلوب، سلسلة | تحدد هذه المعلمة الجهة التي أرسلت هذه الاستجابة. القيمة هي الرمز المميّز لتسجيل تطبيق العميل. |
message_id |
مطلوب، سلسلة | تحدِّد هذه المَعلمة رسالة بشكل فريد في اتصال XMPP. القيمة هي سلسلة تعرّف الرسالة المرتبطة بشكل فريد. |
message_type |
مطلوب، سلسلة | تحدّد هذه المعلمة رسالة إذا تم ضبط القيمة على |
error |
اختيارية، سلسلة | تحدّد هذه المعلمة خطأ متعلقًا برسالة استلام البريد. ويتم تعيينها عندما
تم nack ميزة message_type . اطّلِع على الجدول 4 للاطّلاع على التفاصيل. |
error_description |
اختيارية، سلسلة | تقدّم هذه المَعلمة معلومات وصفية عن الخطأ. تم تعيينه
عندما تكون قيمة message_type هي nack . |
رموز الاستجابة للأخطاء التي تحدث في مرحلة متأخرة من الوقت
يسرد الجدول التالي رموز الاستجابة للأخطاء للرسائل التي تلي استلام البريد.
خطأ | رمز XMPP | الإجراء المقترَح |
---|---|---|
الرمز المميّز للتسجيل غير متوفّر | INVALID_JSON |
تحقق من أن الطلب يحتوي على رمز مميز للتسجيل (في
registration_id في رسالة نصية عادية، أو في to
أو registration_ids بتنسيق JSON). |
تسجيل أسماء نقاط الوصول غير صالح | INVALID_JSON |
بالنسبة إلى عمليات تسجيل أجهزة iOS، تأكَّد من أنّ طلب التسجيل الذي تلقّيته من العميل يحتوي على معرّف تطبيق ورمز مميّز صالحَين لخدمة APNs. |
الرمز المميّز للتسجيل غير صالح | BAD_REGISTRATION |
تحقّق من تنسيق الرمز المميّز للتسجيل الذي ترسله إلى الخادم. تأكَّد من أنّه يتطابق مع الرمز المميّز للتسجيل الذي يتلقّاه تطبيق العميل من التسجيل باستخدام FCM. لا تقصّ العنوان أو تُضِف إليه أحرفًا إضافية. |
جهاز غير مسجَّل | DEVICE_UNREGISTERED |
قد يصبح الرمز المميّز الحالي للتسجيل غير صالح في عدد من السيناريوهات، بما في ذلك:
|
عدم تطابق بيانات المُرسِل | 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_
|
حدث خطأ في الخادم أثناء محاولة معالجة الطلب. يمكنك إعادة المحاولة تقديم الطلب نفسه وفقًا للمتطلبات المذكورة في "المهلة" (انظر الصف أعلاه). |
تجاوز معدّل إرسال الرسائل على الجهاز | DEVICE_MESSAGE_RATE |
معدّل الرسائل المرسَلة إلى جهاز معيّن مرتفع جدًا. تقليل عدد الرسائل المرسلة إلى هذا الجهاز، وعدم إعادة محاولة الإرسال إلى هذا الجهاز على الفور. |
تم تجاوز معدل رسائل الموضوعات | TOPICS_MESSAGE_RATE |
معدل الرسائل الموجهة إلى المشتركين في موضوع معين مرتفع جدًا. قلِّل عدد الرسائل المُرسَلة لهذا الموضوع، ولا تحاول إعادة الإرسال على الفور. |
استنزاف الاتصال | CONNECTION_DRAINING |
تعذّرت معالجة الرسالة لأنّ الاتصال بالإنترنت ضعيف. يحدث هذا لأن، على FCM بشكل دوري إغلاق الاتصال لتنفيذ موازنة التحميل. يُرجى إعادة محاولة إرسال الرسالة من جديد. اتصال XMPP آخر. |
بيانات اعتماد APNs غير صالحة | INVALID_APNS_CREDENTIAL |
تعذّر إرسال رسالة مستهدفة لجهاز iOS لأنّه لم يتم تحميل مفتاح مصادقة APNs المطلوب أو انتهت صلاحيته. التحقق من صحة تطورك وبيانات اعتماد الإنتاج. |
تعذّرت المصادقة. | AUTHENTICATION_FAILED |
تعذّرت المصادقة باستخدام خدمات الدفع الخارجية. تحقق مما إذا كنت تستخدم وشهادات Web Push. |
بنية الرسائل المرسَلة إلى الخادم
رسالة الإرسال هي رسالة يرسلها تطبيق العميل إلى خادم التطبيق. لا تتوافق حاليًا سوى XMPP مع رسائل البث. عرض الوثائق الخاصة بالنظام الأساسي لديك لمعرفة المزيد معلومات حول إرسال الرسائل من تطبيقات العميل.
تفسير رسالة XMPP رئيسية
يوضّح الجدول التالي الحقول في فقرة XMPP التي أنشأهاFCM رداً على طلبات الرسائل من التطبيقات العميلة.
المعلمة | الاستخدام | الوصف |
---|---|---|
from |
مطلوب، سلسلة | تحدِّد هذه المَعلمة مَن أرسل الرسالة. القيمة هي الرمز المميّز لتسجيل تطبيق العميل. |
category |
مطلوب، سلسلة | تحدِّد هذه المَعلمة اسم حزمة التطبيق الخاص بتطبيق العميل الذي أرسل الرسالة. |
message_id |
مطلوب، سلسلة | تحدّد هذه المَعلمة المعرّف الفريد للرسالة. |
data |
اختيارية، سلسلة | تحدد هذه المعلمة أزواج المفتاح/القيمة لحمولة الرسالة. |
إرسال رسالة ACK
يوضّح الجدول التالي ردّ ACK الذي من المتوقّع أن يرسله خادم التطبيق إلى FCM استجابةً لرسالة upstream التي تلقّاها خادم التطبيق.
المعلمة | الاستخدام | الوصف |
---|---|---|
to |
مطلوب، سلسلة | تحدّد هذه المَعلمة مستلِم رسالة الردّ. يجب أن تكون القيمة رمزًا مميّزًا للتسجيل لتطبيق العميل الذي أرسل رسالة الإرسال. |
message_id |
مطلوب، سلسلة | تحدِّد هذه المَعلمة الرسالة المقصودة للاستجابة. يجب أن تكون القيمة
قيمة message_id من رسالة الإرسال المقابلة. |
message_type |
مطلوب، سلسلة | تحدِّد هذه المَعلمة رسالة ack من خادم تطبيق إلى CCS.
بالنسبة إلى الرسائل الأولية، يجب ضبطها دائمًا على ack . |
FCM رسالة الخادم (XMPP)
هذه رسالة تم إرسالها من FCM إلى خادم تطبيق. في ما يلي الأنواع الأساسية للرسائل التي FCM إلى خادم التطبيق:
- التحكّم: تشير هذه الرسائل التي تم إنشاؤها باستخدام ميزة CCS إلى ما يلي: يجب اتخاذ إجراء من خادم التطبيق.
يصف الجدول التالي الحقول المضمنة في رسائل CCS. ترسل إلى خادم التطبيق.
المعلمة | الاستخدام | الوصف |
---|---|---|
الحقل الشائع | ||
message_type |
مطلوب، سلسلة | تحدد هذه المعلمة نوع الرسالة: Control. عند ضبطه على |
control_type |
اختيارية، سلسلة | تحدِّد هذه المَعلمة نوع رسالة التحكّم المُرسَلة من FCM. في الوقت الحالي، يُسمح فقط باستخدام |