پروتکل Firebase Cloud Messaging XMPP

این سند مرجعی برای نحو XMPP ارائه می‌دهد که برای ارسال پیام‌ها بین سرور برنامه، برنامه‌های مشتری، و Firebase Cloud Messaging (FCM) استفاده می‌شود. سرور برنامه شما باید به این نقاط پایانی متصل شود:

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

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

پارامترها و گزینه های موجود در این دسته بندی ها قرار می گیرند:

نحو پیام پایین دست

این بخش نحوی را برای ارسال پیام های پایین دستی ارائه می دهد.

پیام‌های XMPP پایین‌دست (JSON)

جدول زیر اهداف، گزینه‌ها و بارگذاری پیام‌های XMPP JSON را فهرست می‌کند.

جدول 1 اهداف، گزینه‌ها و بار برای پیام‌های پایین‌دستی XMPP (JSON).

پارامتر استفاده شرح
هدف
to اختیاری، رشته

این پارامتر گیرنده پیام را مشخص می کند.

این مقدار می تواند نشانه ثبت نام دستگاه، کلید اعلان گروه دستگاه یا یک موضوع واحد (پیشوند با /topics/ ) باشد. برای ارسال به چندین موضوع، از پارامتر condition استفاده کنید.

condition اختیاری، رشته

این پارامتر یک بیان منطقی از شرایط را مشخص می کند که هدف پیام را تعیین می کند.

شرایط پشتیبانی شده: موضوع، قالب‌بندی شده به عنوان «موضوع شما» در موضوعات. این مقدار به حروف بزرگ و کوچک حساس نیست.

اپراتورهای پشتیبانی شده: && ، || . حداکثر دو اپراتور در هر پیام موضوع پشتیبانی می شود.

گزینه ها
message_id مورد نیاز، رشته

این پارامتر به طور منحصر به فرد پیامی را در یک اتصال XMPP شناسایی می کند.

collapse_key اختیاری، رشته

این پارامتر گروهی از پیام‌ها را شناسایی می‌کند (به‌عنوان مثال، با collapse_key: "Updates Available" ) که می‌توانند جمع شوند تا زمانی که تحویل از سر گرفته شود، تنها آخرین پیام ارسال شود. هدف از این کار، جلوگیری از ارسال بیش از حد پیام‌های مشابه زمانی است که دستگاه دوباره آنلاین می‌شود یا از حالت چرت زدن خارج می‌شود.

هیچ تضمینی برای ترتیب ارسال پیام ها وجود ندارد.

توجه: حداکثر 4 کلید کوچک کردن مختلف در هر زمان مجاز است. این بدان معناست که FCM می تواند به طور همزمان 4 پیام مختلف را در هر برنامه مشتری ذخیره کند. اگر از این تعداد تجاوز کنید، هیچ تضمینی وجود ندارد که FCM کدام 4 کلید جمع شدنی را حفظ کند.

priority اختیاری، رشته

اولویت پیام را تعیین می کند. مقادیر معتبر «نرمال» و «بالا» هستند. در پلتفرم‌های اپل، این موارد با اولویت‌های 5 و 10 APN مطابقت دارند.

به طور پیش‌فرض، پیام‌های اعلان با اولویت بالا و پیام‌های داده با اولویت عادی ارسال می‌شوند. اولویت عادی مصرف باتری برنامه مشتری را بهینه می کند و باید از آن استفاده کرد مگر اینکه تحویل فوری لازم باشد. برای پیام‌هایی با اولویت معمولی، برنامه ممکن است پیام را با تاخیر نامشخصی دریافت کند.

هنگامی که پیامی با اولویت بالا ارسال می شود، بلافاصله ارسال می شود و برنامه می تواند یک اعلان نمایش دهد.

content_available اختیاری، بولی

در پلتفرم‌های اپل، از این فیلد برای نمایش content-available در بارگذاری APN استفاده کنید. وقتی یک اعلان یا پیام ارسال می‌شود و روی true تنظیم می‌شود، یک برنامه مشتری غیرفعال بیدار می‌شود و پیام از طریق APN به‌عنوان یک اعلان بی‌صدا و نه از طریق FCM ارسال می‌شود. توجه داشته باشید که اعلان‌های بی‌صدا در APN‌ها تضمینی برای تحویل ندارند و می‌توانند به عواملی مانند روشن کردن حالت کم مصرف توسط کاربر، خروج اجباری از برنامه و غیره بستگی داشته باشند. در اندروید، پیام‌های داده به‌طور پیش‌فرض برنامه را بیدار می‌کنند. در Chrome، در حال حاضر پشتیبانی نمی شود.

mutable_content اختیاری، JSON boolean

در پلتفرم‌های اپل، از این فیلد برای نمایش mutable-content در بارگذاری APN استفاده کنید. وقتی اعلان ارسال می‌شود و روی true تنظیم می‌شود، می‌توان محتوای اعلان را قبل از نمایش با استفاده از برنامه افزودنی سرویس اعلان تغییر داد. این پارامتر برای اندروید و وب نادیده گرفته می شود.

time_to_live اختیاری، شماره

این پارامتر مشخص می کند که در صورت آفلاین بودن دستگاه، چه مدت (بر حسب ثانیه) پیام باید در فضای ذخیره سازی FCM نگهداری شود. حداکثر زمان پشتیبانی زنده 4 هفته و مقدار پیش فرض آن 4 هفته است. برای اطلاعات بیشتر، به تنظیم طول عمر پیام مراجعه کنید.

dry_run اختیاری، بولی

این پارامتر، وقتی روی true تنظیم شود، به توسعه دهندگان اجازه می دهد تا بدون ارسال پیام، درخواست را آزمایش کنند.

مقدار پیش فرض false است .

ظرفیت ترابری
data اختیاری، شی

این پارامتر جفت های کلید-مقدار محموله پیام را مشخص می کند.

برای مثال، با data:{"score":"3x1"}:

در پلتفرم‌های اپل، اگر پیام توسط APN تحویل داده شود، فیلدهای داده سفارشی را نشان می‌دهد. اگر توسط FCM تحویل داده شود، به عنوان یک فرهنگ لغت ارزش کلیدی در AppDelegate application:didReceiveRemoteNotification: .

در Android، این منجر به یک score اضافی با نام با مقدار رشته 3x1 می شود.

کلید نباید یک کلمه رزرو شده باشد ("from"، "message_type" یا هر کلمه ای که با "google" یا "gcm" شروع می شود). از هیچ یک از کلمات تعریف شده در این جدول (مانند collapse_key ) استفاده نکنید.

مقادیر در انواع رشته توصیه می شود. شما باید مقادیر موجود در اشیا یا سایر انواع داده های غیر رشته ای (مثلاً اعداد صحیح یا بولی) را به رشته تبدیل کنید.

notification اختیاری، شی این پارامتر جفت‌های کلید-مقدار از پیش تعریف‌شده و قابل رویت کاربر از بار اعلان را مشخص می‌کند. برای جزئیات بیشتر به پشتیبانی بار بار اعلان مراجعه کنید. برای اطلاعات بیشتر درباره گزینه‌های پیام اعلان و پیام داده، به انواع پیام مراجعه کنید. اگر یک بار اعلان ارائه شود، یا گزینه content_available برای پیامی به دستگاه Apple روی true تنظیم شده باشد، پیام از طریق APN ارسال می شود، در غیر این صورت از طریق FCM ارسال می شود.

پشتیبانی از بارگیری اعلان

جداول زیر کلیدهای از پیش تعریف شده موجود برای ایجاد پیام های اعلان برای پلتفرم های اپل و اندروید را فهرست می کنند.

جدول 2 الف. Apple — کلیدهایی برای پیام های اعلان

پارامتر استفاده شرح
title اختیاری، رشته

عنوان اطلاعیه

این فیلد در گوشی ها و تبلت ها قابل مشاهده نیست.

body اختیاری، رشته

متن متن اعلان.

sound اختیاری، رشته

زمانی که دستگاه اعلان را دریافت می کند، صدایی پخش می شود.

رشته ای که فایل های صوتی را در بسته اصلی برنامه کلاینت یا در پوشه Library/Sounds محفظه داده برنامه مشخص می کند. برای اطلاعات بیشتر به کتابخانه توسعه دهندگان iOS مراجعه کنید.

badge اختیاری، رشته

مقدار نشان در نماد برنامه صفحه اصلی.

اگر مشخص نشده باشد، نشان تغییر نمی کند.

اگر روی 0 تنظیم شود، نشان حذف می شود.

click_action اختیاری، رشته

اقدام مرتبط با کلیک کاربر بر روی اعلان.

مربوط به category در محموله APN ها است.

subtitle اختیاری، رشته

زیرنویس اطلاعیه

body_loc_key اختیاری، رشته

کلید رشته بدنه در منابع رشته برنامه برای بومی سازی متن متن به محلی سازی فعلی کاربر.

مربوط به loc-key در بارگذاری APN است.

برای اطلاعات بیشتر به مرجع کلید Payload و محلی سازی محتوای اعلان های راه دور خود مراجعه کنید.

body_loc_args اختیاری، آرایه JSON به عنوان رشته

مقادیر رشته متغیری که به جای مشخص کننده های قالب در body_loc_key استفاده می شود تا متن اصلی را به محلی سازی فعلی کاربر بومی سازی کنید.

مربوط به loc-args در بارگذاری APN است.

برای اطلاعات بیشتر به مرجع کلید Payload و محلی سازی محتوای اعلان های راه دور خود مراجعه کنید.

title_loc_key اختیاری، رشته

کلید رشته عنوان در منابع رشته برنامه برای بومی سازی متن عنوان در محلی سازی فعلی کاربر.

مربوط به title-loc-key در بارگذاری APN است.

برای اطلاعات بیشتر به مرجع کلید Payload و محلی سازی محتوای اعلان های راه دور خود مراجعه کنید.

title_loc_args اختیاری، آرایه JSON به عنوان رشته

مقادیر رشته متغیری که به جای تعیین کننده های قالب در title_loc_key استفاده می شود تا متن عنوان را به محلی سازی فعلی کاربر بومی سازی کنید.

مربوط به title-loc-args در بارگذاری APN است.

برای اطلاعات بیشتر به مرجع کلید Payload و محلی سازی محتوای اعلان های راه دور خود مراجعه کنید.

جدول 2b. 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 استفاده می شود تا متن عنوان را به محلی سازی فعلی کاربر بومی سازی کنید.

برای اطلاعات بیشتر به قالب‌بندی و استایل‌سازی مراجعه کنید.

جدول 2c. وب (جاوا اسکریپت) - کلیدهایی برای پیام های اعلان

پارامتر استفاده شرح
title اختیاری، رشته

عنوان اطلاعیه

body اختیاری، رشته

متن متن اعلان.

icon اختیاری، رشته

URL مورد استفاده برای نماد اعلان.

click_action اختیاری، رشته

اقدام مرتبط با کلیک کاربر بر روی اعلان.

برای همه مقادیر URL، HTTPS مورد نیاز است.

یک پاسخ پیام XMPP پایین دستی را تفسیر کنید

جدول زیر فیلدهایی را فهرست می کند که در پاسخ پیام XMPP پایین دستی ظاهر می شوند.

جدول 3 پیام پایین دستی پاسخ XMPP.

پارامتر استفاده شرح
from مورد نیاز، رشته

این پارامتر مشخص می کند که چه کسی این پاسخ را ارسال کرده است.

مقدار، نشانه ثبت نام برنامه مشتری است.

message_id مورد نیاز، رشته این پارامتر به طور منحصر به فرد پیامی را در یک اتصال XMPP شناسایی می کند. مقدار رشته ای است که پیام مرتبط را به طور منحصر به فرد شناسایی می کند.
message_type مورد نیاز، رشته

این پارامتر یک پیام ack یا nack از FCM به سرور برنامه را مشخص می کند.

اگر مقدار روی nack تنظیم شده باشد، سرور برنامه باید برای دریافت اطلاعات خرابی به error و error_description نگاه کند.

error اختیاری، رشته این پارامتر خطای مربوط به پیام downstream را مشخص می کند. زمانی تنظیم می شود که message_type nack باشد. برای جزئیات به جدول 4 مراجعه کنید.
error_description اختیاری، رشته این پارامتر اطلاعات توصیفی برای خطا فراهم می کند. زمانی تنظیم می شود که message_type nack باشد.

کدهای پاسخ خطای پیام پایین دست

جدول زیر کدهای پاسخ خطا را برای پیام های پایین دستی فهرست می کند.

جدول 4 کدهای پاسخ خطای پیام پایین دستی.

خطا کد XMPP عمل پیشنهاد شده
رمز ثبت نام وجود ندارد INVALID_JSON بررسی کنید که درخواست حاوی یک نشانه ثبت نام باشد (در registration_id در یک پیام متنی ساده، یا در قسمت to یا registration_ids در JSON).
ثبت نام APN نامعتبر است INVALID_JSON برای ثبت‌نام‌های iOS، بررسی کنید که درخواست ثبت‌نام از سوی مشتری حاوی یک رمز APN معتبر و شناسه برنامه باشد.
رمز ثبت نام معتبر است BAD_REGISTRATION فرمت رمز ثبت نامی که به سرور ارسال می کنید را بررسی کنید. مطمئن شوید که با نشانه ثبتی که برنامه مشتری از ثبت نام در FCM دریافت می کند مطابقت دارد. از کوتاه کردن یا اضافه کردن کاراکترهای اضافی خودداری کنید.
دستگاه ثبت نشده DEVICE_UNREGISTERED یک نشانه ثبت نام موجود ممکن است در تعدادی از سناریوها معتبر نباشد، از جمله:
  • اگر برنامه مشتری با FCM لغو ثبت کند.
  • اگر برنامه سرویس گیرنده به طور خودکار ثبت نشده باشد، اگر کاربر برنامه را حذف نصب کند، ممکن است اتفاق بیفتد. برای مثال، در iOS، اگر APN ها توکن APN را نامعتبر گزارش کنند.
  • اگر رمز ثبت نام منقضی شود (برای مثال، ممکن است Google تصمیم بگیرد که نشانه‌های ثبت نام را بازخوانی کند، یا نشانه APNs برای دستگاه‌ها منقضی شده باشد).
  • اگر برنامه سرویس گیرنده به روز شده است، اما نسخه جدید برای دریافت پیام پیکربندی نشده است.
برای همه این موارد، این رمز ثبت نام را از سرور برنامه حذف کنید و استفاده از آن را برای ارسال پیام متوقف کنید.
فرستنده ناسازگار SENDER_ID_MISMATCH یک نشانه ثبت نام به گروه خاصی از فرستندگان گره خورده است. هنگامی که یک برنامه مشتری برای FCM ثبت نام می کند، باید مشخص کند که کدام فرستنده مجاز به ارسال پیام است. هنگام ارسال پیام به برنامه مشتری باید از یکی از آن شناسه های فرستنده استفاده کنید. اگر به فرستنده دیگری بروید، نشانه‌های ثبت‌نام موجود کار نمی‌کنند.
JSON نامعتبر است INVALID_JSON بررسی کنید که پیام JSON به درستی قالب بندی شده باشد و حاوی فیلدهای معتبر باشد (به عنوان مثال، مطمئن شوید که نوع داده مناسب ارسال شده است).
پیام خیلی بزرگ است INVALID_JSON بررسی کنید که حجم کل داده‌های محموله موجود در یک پیام از محدودیت‌های FCM تجاوز نکند: 4096 بایت برای اکثر پیام‌ها یا 2048 بایت در مورد پیام‌ها به موضوعات. این شامل کلیدها و مقادیر می شود.
کلید داده نامعتبر است INVALID_JSON بررسی کنید که داده‌های محموله حاوی کلید (مانند from ، gcm ، یا هر مقداری که پیشوند google است) نباشد که به صورت داخلی توسط FCM استفاده می‌شود. توجه داشته باشید که برخی از کلمات (مانند collapse_key ) نیز توسط FCM استفاده می‌شوند اما در payload مجاز هستند، در این صورت مقدار payload با مقدار FCM لغو می‌شود.
زمان نامعتبر برای زندگی INVALID_JSON بررسی کنید که مقدار استفاده شده در time_to_live یک عدد صحیح باشد که نشان دهنده مدت زمان در ثانیه بین 0 تا 2,419,200 (4 هفته) است.
پیام ACK بد BAD_ACK قبل از تلاش مجدد بررسی کنید که پیام ack به درستی قالب بندی شده باشد. برای جزئیات به جدول 6 مراجعه کنید.
تایم اوت SERVICE_UNAVAILABLE

سرور نتوانست به موقع درخواست را پردازش کند. همان درخواست را دوباره امتحان کنید، اما باید:

  • در مکانیسم تلاش مجدد خود، عقب نشینی نمایی را پیاده سازی کنید. (به عنوان مثال اگر قبل از اولین تلاش مجدد یک ثانیه صبر کرده اید، حداقل دو ثانیه قبل از تلاش بعدی، سپس چهار ثانیه و غیره صبر کنید). اگر چندین پیام ارسال می کنید، هر کدام را به طور مستقل با مقدار تصادفی اضافی به تاخیر بیندازید تا از صدور درخواست جدید برای همه پیام ها به طور همزمان جلوگیری کنید.
  • تأخیر در تلاش مجدد اولیه باید روی یک ثانیه تنظیم شود.

توجه: فرستنده هایی که مشکل ایجاد می کنند در معرض خطر قرار گرفتن در لیست سیاه هستند.

خطای سرور داخلی INTERNAL_SERVER_
ERROR
سرور هنگام تلاش برای پردازش درخواست با خطایی مواجه شد. می‌توانید با پیروی از شرایط ذکر شده در «Timeout»، همان درخواست را دوباره امتحان کنید (به ردیف بالا مراجعه کنید).
نرخ پیام دستگاه بیش از حد است DEVICE_MESSAGE_RATE
_EXCEEDED
نرخ پیام به یک دستگاه خاص بسیار بالا است. تعداد پیام های ارسال شده به این دستگاه را کاهش دهید و فوراً ارسال مجدد به این دستگاه را تکرار نکنید.
نرخ پیام موضوعات بیشتر شد TOPICS_MESSAGE_RATE
_EXCEEDED
نرخ پیام به مشترکین یک موضوع خاص بسیار زیاد است. تعداد پیام های ارسال شده برای این موضوع را کاهش دهید و بلافاصله ارسال مجدد را تکرار نکنید.
تخلیه اتصال CONNECTION_DRAINING پیام پردازش نشد زیرا اتصال در حال تخلیه است. این به این دلیل اتفاق می‌افتد که به‌طور دوره‌ای، FCM باید یک اتصال را ببندد تا تعادل بار را انجام دهد. پیام را از طریق یک اتصال XMPP دیگر امتحان کنید.
اعتبارنامه های APN نامعتبر INVALID_APNS_CREDENTIAL پیامی که برای یک دستگاه iOS هدف گذاری شده است ارسال نشد زیرا کلید احراز هویت APN های مورد نیاز آپلود نشده یا منقضی شده است. اعتبار اعتبارنامه توسعه و تولید خود را بررسی کنید.
احراز هویت ناموفق بود AUTHENTICATION_FAILED احراز هویت با سرویس‌های فشار خارجی انجام نشد. بررسی کنید که آیا از گواهینامه های فشار وب درست استفاده می کنید.

نحو پیام بالادست

پیام upstream پیامی است که برنامه مشتری به سرور برنامه ارسال می کند. در حال حاضر فقط XMPP از پیام رسانی بالادستی پشتیبانی می کند. برای اطلاعات بیشتر درباره ارسال پیام از برنامه‌های سرویس گیرنده، به اسناد پلتفرم خود مراجعه کنید.

تفسیر یک پیام بالادستی XMPP

جدول زیر فیلدهای مصراع XMPP را که توسط FCM در پاسخ به درخواست‌های پیام بالادستی از برنامه‌های کلاینت ایجاد شده است، توضیح می‌دهد.

جدول 5 پیام های بالادستی XMPP.

پارامتر استفاده شرح
from مورد نیاز، رشته

این پارامتر مشخص می کند که چه کسی پیام را ارسال کرده است.

مقدار، نشانه ثبت نام برنامه مشتری است.

category مورد نیاز، رشته این پارامتر نام بسته برنامه برنامه مشتری که پیام را ارسال کرده است را مشخص می کند.
message_id مورد نیاز، رشته این پارامتر شناسه منحصر به فرد پیام را مشخص می کند.
data اختیاری، رشته این پارامتر جفت های کلید-مقدار محموله پیام را مشخص می کند.

ارسال پیام ACK

جدول زیر پاسخ ACK را توضیح می دهد که انتظار می رود سرور برنامه در پاسخ به پیامی که سرور برنامه دریافت کرده است به FCM ارسال کند.

جدول 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 این پیام کنترلی را قبل از بستن اتصال برای انجام تعادل بار ارسال می کند. با پایان یافتن اتصال، هیچ پیام دیگری مجاز به ارسال به اتصال نیست، اما پیام‌های موجود در خط لوله همچنان پردازش می‌شوند.