باستخدام FCM، يمكنك إرسال نوعَين من الرسائل إلى تطبيقات العميل:
- رسائل الإشعارات، المشابهة لـ "رسائل العرض"، التي تعالجها حزمة تطوير البرامج (SDK) تلقائيًا.FCM
- رسائل البيانات، التي يعالجها تطبيق العميل
تحتوي رسائل الإشعارات على مجموعة محدّدة مسبقًا من المفاتيح المرئية للمستخدم، ويمكن أن تحتوي على حمولة بيانات اختيارية. في المقابل، لا تحتوي رسائل البيانات إلا على أزواج المفاتيح والقيم المخصّصة التي يحدّدها المستخدم. الحد الأقصى للحمولة لكلا نوعَي الرسائل هو 4096 بايت، باستثناء إرسال الرسائل من وحدة تحكّم Firebase، التي تفرض حدًا أقصى يبلغ 1000 حرف.
| سيناريو الاستخدام | كيفية الإرسال | |
|---|---|---|
| رسالة إشعار | FCM تعرض حزمة تطوير البرامج (SDK) الرسالة على أجهزة المستخدمين النهائيين نيابةً عن تطبيق العميل عندما يكون قيد التشغيل في الخلفية. إذا كان التطبيق قيد التشغيل في المقدّمة عند تلقّي الإشعار، يحدّد رمز التطبيق السلوك. |
|
| رسالة بيانات | تطبيق العميل هو المسؤول عن معالجة رسائل البيانات. لا تحتوي رسائل البيانات إلا على أزواج المفاتيح والقيم المخصّصة بدون أسماء مفاتيح محجوزة (اطّلِع أدناه). | في بيئة موثوق بها، مثل
Cloud Functions
أو خادم التطبيق، استخدِم
Firebase Admin SDK أو
الإصدار 1 من واجهة برمجة تطبيقات HTTP.
في طلب الإرسال، اضبط المفتاح data.
|
يمكنك استخدام رسائل الإشعارات عندما تريد أن تعالج حزمة تطوير البرامج (SDK) لخدمة FCM عرض الإشعار تلقائيًا عندما يكون تطبيقك قيد التشغيل في الخلفية. FCM يمكن إرسال رسالة إشعار مع حمولة بيانات اختيارية. في هذه الحالات، تعرض FCM حمولة الإشعار، ويعالج تطبيق العميل حمولة البيانات.
يمكنك استخدام رسائل البيانات عندما تريد معالجة الرسائل باستخدام رمز تطبيق العميل الخاص بك.
رسائل الإشعارات
يمكنك إرسال رسائل الإشعارات باستخدام Firebaseوحدة التحكّم أو Firebase Admin SDK أو الإصدار 1 من واجهة برمجة تطبيقات HTTP لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" API. توفر وحدة تحكم Firebase اختبار A/B المستند إلى "إحصاءات Google" لمساعدتك في تحسين رسائل الإشعارات.
لإرسال رسائل الإشعارات باستخدام Firebase Admin SDK أو الإصدار 1 من واجهة برمجة تطبيقات FCM
HTTP، اضبط المفتاح notification باستخدام المجموعة المحدّدة مسبقًا من خيارات المفاتيح والقيم
لرسالة الإشعار. يمكنك استخدام المثال التالي لتنسيق رسالة إشعار في تطبيق مراسلة فورية.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
يتم تسليم رسائل الإشعارات إلى لوحة الإشعارات عندما يكون التطبيق قيد التشغيل في الخلفية. بالنسبة إلى التطبيقات قيد التشغيل في المقدّمة، تتم معالجة الرسائل من خلال دالة رد الاتصال.
يمكنك استخدام مستند مرجع كائن الإشعار في الإصدار 1 من واجهة برمجة تطبيقات HTTP لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للاطّلاع على القائمة الكاملة للمفاتيح المحدّدة مسبقًا والمتاحة لإنشاء رسائل الإشعارات.
رسائل البيانات
يعود إليك تحديد كيفية استخدام حمولة data في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لتنفيذ نظام التشفير الذي تختاره. تأكَّد من عدم استخدام أي كلمات محجوزة في أزواج المفاتيح والقيم المخصّصة. تشمل الكلمات المحجوزة from أو message_type أو
أي كلمة تبدأ بـ google. أو gcm. أو gcm.notification..
يوضّح المثال التالي استخدام حقل البيانات على المستوى الأعلى أو حقل البيانات الشائع، الذي تفسّره تطبيقات العميل على جميع الأنظمة الأساسية التي تتلقّى الرسالة. على كل نظام أساسي، يتلقّى تطبيق العميل حمولة البيانات في دالة رد الاتصال.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
رسائل الإشعارات مع حمولة بيانات اختيارية
يمكنك إرسال رسائل إشعارات تحتوي على حمولة اختيارية من أزواج المفاتيح والقيم المخصّصة بشكل آلي أو باستخدام وحدة تحكّم Firebase. في منشئ الإشعارات، استخدِم حقول البيانات المخصّصة في الخيارات المتقدّمة.
يعتمد سلوك التطبيق عند تلقّي الرسائل التي تتضمّن حمولتَي الإشعار والبيانات على ما إذا كان التطبيق قيد التشغيل في الخلفية أو المقدّمة، أي ما إذا كان نشطًا في وقت تلقّي الرسالة.
- عندما يكون التطبيق قيد التشغيل في الخلفية، يتلقّى حمولة الإشعار في لوحة الإشعارات، ولا يعالج حمولة البيانات إلا عندما ينقر المستخدم على الإشعار.
- عندما يكون التطبيق قيد التشغيل في المقدّمة، يتلقّى تطبيقك كائن رسالة يتضمّن كلتا الحمولتَين.
في ما يلي رسالة بتنسيق JSON تحتوي على كل من المفتاح
notification والمفتاح data:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}