يوفّر هذا المستند مرجعًا لبنية XMPP المستخدَمة لنقل الرسائل بين خادم تطبيقك وتطبيقات العملاء وFirebase Cloud Messaging (FCM). يجب أن يتصل خادم التطبيق بنقطتَي النهاية التاليتَين:
// Production fcm-xmpp.googleapis.com:5235 // Testing fcm-xmpp.googleapis.com:5236
تندرج المَعلمات وال options المتاحة ضمن الفئات التالية:
بنية الرسالة التي ينطلق منها
يقدّم هذا القسم بنية إرسال الرسائل إلى أسفل السلسلة.
رسائل XMPP للتحميل (بتنسيق JSON)
يسرد الجدول التالي الاستهدافات والخيارات وحمولة رسائل XMPP JSON .
المَعلمة | الاستخدام | الوصف | |
---|---|---|---|
الاستهداف | |||
to |
اختياري، سلسلة |
تحدّد هذه المَعلمة مستلِم الرسالة.
يمكن أن تكون القيمة رمز تسجيل جهاز أو
مفتاح إشعار لمجموعة أجهزة أو موضوع واحد (يسبقه
|
|
condition |
اختيارية، سلسلة | تحدّد هذه المَعلمة تعبيرًا منطقيًا للشروط التي تحدد هدف الرسالة. الشرط المتوافق: موضوع، تم تنسيقه كـ "'yourTopic' في المواضيع". هذه القيمة غير حسّاسة لحالة الأحرف. عوامل التشغيل المسموح بها: |
|
الخيارات | |||
message_id |
مطلوب، سلسلة | تحدِّد هذه المَعلمة رسالة بشكل فريد في اتصال XMPP. |
|
collapse_key |
اختياري، سلسلة | تحدد هذه المَعلمة مجموعة من الرسائل (مثلاً، باستخدام
لا يمكن ضمان ترتيب إرسال الرسائل. ملاحظة: يُسمح بحد أقصى 4 مفاتيح مختلفة للاختصار في أي وقت. وهذا يعني أنّه يمكن لتطبيق FCM تخزين 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
، يتم إرسال الرسالة من خلال APNs، وإلا يتم إرسالها من خلال
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 |
اختيارية، سلسلة | تحدد هذه المَعلمة خطأ مرتبطًا برسالة البث. يتم ضبطه عندما يكون
message_type هو nack . اطّلِع على الجدول 4 للاطّلاع على التفاصيل. |
error_description |
اختيارية، سلسلة | تقدّم هذه المَعلمة معلومات وصفية عن الخطأ. يتم ضبطه
عندما يكون message_type هو nack . |
رموز الاستجابة للأخطاء التي تحدث في مرحلة متأخرة من الوقت
يسرد الجدول التالي رموز استجابة الخطأ للرسائل الواردة.
خطأ | رمز XMPP | الإجراء المقترَح |
---|---|---|
عدم توفّر الرمز المميّز للتسجيل | INVALID_JSON |
تأكَّد من أنّ الطلب يتضمّن رمزًا مميّزًا للتسجيل (في
registration_id في رسالة نصية عادية، أو في الحقل to
أو registration_ids بتنسيق JSON). |
تسجيل APN غير صالح | 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 | TOPICS_MESSAGE_RATE |
معدل الرسائل الموجهة إلى المشتركين في موضوع معين مرتفع جدًا. قلِّل عدد الرسائل المُرسَلة لهذا الموضوع، ولا تحاول إعادة الإرسال على الفور. |
استنزاف الاتصال | CONNECTION_DRAINING |
تعذّرت معالجة الرسالة لأنّ الاتصال بالإنترنت ضعيف. ويحدث ذلك لأنّFCM يحتاج بشكل دوري إلى إغلاق اتصال لإجراء موازنة التحميل. أعِد إرسال الرسالة من خلال اتصال XMPP آخر. |
بيانات اعتماد APN غير صالحة | 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_type |
اختياري، سلسلة | تحدّد هذه المعلمة نوع رسالة التحكّم المُرسَلة من FCM. لا يُسمح حاليًا إلا بالقيمة |