پروتکل HTTP پیام‌رسانی ابری Firebase

این سند مرجعی برای دستور HTTP ارائه می‌دهد که برای ارسال پیام‌ها از سرور برنامه شما به برنامه‌های مشتری از طریق Firebase Cloud Messaging استفاده می‌شود.

هنگام استفاده از پروتکل HTTP قدیمی، سرور برنامه شما باید تمام درخواست های HTTP را به این نقطه پایانی هدایت کند:

https://fcm.googleapis.com/fcm/send

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

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

این بخش نحوی را برای ارسال پیام‌های پایین‌دست و تفسیر پاسخ‌های HTTP از Firebase Cloud Messaging ارائه می‌دهد.

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

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

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

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

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

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

registration_ids
اختیاری، آرایه ای از رشته ها

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

مقدار باید آرایه ای از نشانه های ثبت نام باشد که پیام چندپخشی به آن ارسال شود. آرایه باید حداقل 1 و حداکثر 1000 نشانه ثبت نام داشته باشد. برای ارسال پیام به یک دستگاه، از پارامتر to استفاده کنید.

پیام‌های چندپخشی فقط با استفاده از قالب HTTP JSON مجاز هستند.

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

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

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

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

notification_key
منسوخ شده است
اختیاری، رشته

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

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

restricted_package_
name
(فقط اندروید)
اختیاری، رشته این پارامتر نام بسته برنامه را مشخص می کند که در آن نشانه های ثبت باید برای دریافت پیام مطابقت داشته باشند.
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 ارسال می شود.

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

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

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

پارامتر استفاده توضیحات
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 مورد نیاز است.

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

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

جدول 3. اهداف، گزینه ها و بار برای پیام های HTTP متن ساده پایین دستی.

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

این پارامتر برنامه های سرویس گیرنده (توکن های ثبت نام) را که پیام را دریافت می کنند، مشخص می کند.

ارسال پیام چندپخشی (ارسال به بیش از یک نشانه ثبت نام) فقط با استفاده از فرمت HTTP JSON مجاز است.

گزینه ها
collapse_key اختیاری، رشته برای جزئیات به جدول 1 مراجعه کنید.
time_to_live اختیاری، شماره برای جزئیات به جدول 1 مراجعه کنید.
restricted_package_name اختیاری، رشته برای جزئیات به جدول 1 مراجعه کنید.
dry_run اختیاری، بولی برای جزئیات به جدول 1 مراجعه کنید.
بار
data.<key> اختیاری، رشته

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

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

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

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

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

جدول 4. سرصفحه پاسخ پیام HTTP پایین دست.

پاسخ توضیحات
200 پیام با موفقیت پردازش شد. بدنه پاسخ حاوی جزئیات بیشتری در مورد وضعیت پیام است، اما قالب آن بستگی به JSON یا متن ساده درخواست دارد. برای جزئیات بیشتر به جدول 5 مراجعه کنید.
400 فقط برای درخواست های JSON اعمال می شود. نشان می دهد که درخواست را نمی توان به عنوان JSON تجزیه کرد، یا حاوی فیلدهای نامعتبر بود (به عنوان مثال، ارسال رشته ای که در آن عدد مورد انتظار بود). دلیل دقیق شکست در پاسخ توضیح داده شده است و قبل از امتحان مجدد درخواست باید به مشکل رسیدگی شود.
401 هنگام احراز هویت حساب فرستنده خطایی روی داد.
5xx خطاها در محدوده 500-599 (مانند 500 یا 503) نشان می‌دهند که هنگام تلاش برای پردازش درخواست، یک خطای داخلی در پشتیبان FCM رخ داده است، یا اینکه سرور موقتاً در دسترس نیست (مثلاً به دلیل وقفه‌های زمانی). فرستنده باید بعداً دوباره امتحان کند و هر سرصفحه Retry-After موجود در پاسخ را رعایت کند. سرورهای برنامه باید پس‌آف نمایی را پیاده‌سازی کنند.

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

جدول 5. بدنه پاسخ پیام HTTP پایین دست (JSON).

پارامتر استفاده توضیحات
multicast_id مورد نیاز، شماره شناسه (شماره) منحصر به فرد که پیام چندپخشی را شناسایی می کند.
success مورد نیاز، شماره تعداد پیام هایی که بدون خطا پردازش شدند.
failure مورد نیاز، شماره تعداد پیام هایی که پردازش نشدند.
results مورد نیاز، آرایه ای از اشیاء آرایه ای از اشیاء نشان دهنده وضعیت پیام های پردازش شده است. اشیاء به همان ترتیب درخواست فهرست می شوند (یعنی برای هر شناسه ثبت در درخواست، نتیجه آن در همان فهرست در پاسخ ذکر می شود).
  • message_id : رشته ای که یک شناسه منحصر به فرد برای هر پیامی که با موفقیت پردازش شده است مشخص می کند.
  • error : رشته ای که خطایی را که هنگام پردازش پیام برای گیرنده رخ داده است را مشخص می کند. مقادیر ممکن را می توان در جدول 9 یافت.

جدول 6. بدنه پاسخ HTTP پیام موضوع (JSON).

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

جدول 7. پاسخ موفقیت آمیز بدنه پاسخ پیام HTTP پایین دست (متن ساده).

پارامتر استفاده توضیحات
id مورد نیاز، رشته این پارامتر شناسه پیام منحصر به فرد FCM را مشخص می کند که با موفقیت پردازش شده است.
registration_id اختیاری، رشته این پارامتر رمز ثبت نام برنامه مشتری را مشخص می کند که پیام پردازش شده و به آن ارسال شده است.

جدول 8. پاسخ خطا برای بدنه پاسخ پیام HTTP پایین دست (متن ساده).

پارامتر استفاده توضیحات
Error مورد نیاز، رشته این پارامتر مقدار خطا را هنگام پردازش پیام برای گیرنده مشخص می کند. برای جزئیات به جدول 9 مراجعه کنید.

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

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

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

خطا کد HTTP اقدام توصیه شده
رمز ثبت نام وجود ندارد 200 + خطا: MissingRegistration بررسی کنید که درخواست حاوی یک نشانه ثبت نام باشد (در registration_id در یک پیام متنی ساده، یا در قسمت to یا registration_ids در JSON).
رمز ثبت نام معتبر است 200 + خطا:InvalidRegistration فرمت رمز ثبت نامی که به سرور ارسال می کنید را بررسی کنید. مطمئن شوید که با نشانه ثبت نامی که برنامه مشتری از ثبت نام در Firebase Notifications دریافت می کند مطابقت دارد. از کوتاه کردن یا اضافه کردن کاراکترهای اضافی خودداری کنید.
دستگاه ثبت نشده 200 + خطا: ثبت نشده است یک نشانه ثبت نام موجود ممکن است در تعدادی از سناریوها معتبر نباشد، از جمله:
  • اگر برنامه مشتری با FCM لغو ثبت نام کند.
  • اگر برنامه سرویس گیرنده به طور خودکار ثبت نشده باشد، اگر کاربر برنامه را حذف نصب کند، ممکن است اتفاق بیفتد. به عنوان مثال، در iOS، اگر سرویس بازخورد APNs توکن APN را نامعتبر گزارش کند.
  • اگر نشانه ثبت نام منقضی شود (برای مثال، ممکن است Google تصمیم بگیرد که نشانه های ثبت نام را به روز کند، یا نشانه APNs برای دستگاه های iOS منقضی شده است).
  • اگر برنامه سرویس گیرنده به روز شده باشد اما نسخه جدید برای دریافت پیام پیکربندی نشده باشد.
برای همه این موارد، این رمز ثبت نام را از سرور برنامه حذف کنید و استفاده از آن برای ارسال پیام را متوقف کنید.
نام بسته نامعتبر است 200 + خطا:InvalidPackageName مطمئن شوید که پیام به یک نشانه ثبتی که نام بسته آن با مقدار ارسال شده در درخواست مطابقت دارد، خطاب شده است.
خطای احراز هویت 401 حساب فرستنده مورد استفاده برای ارسال پیام تأیید اعتبار نمی شود. علل احتمالی عبارتند از:
  • سرصفحه مجوز موجود نیست یا دارای نحو نامعتبر در درخواست HTTP است.
  • پروژه Firebase که کلید سرور مشخص شده به آن تعلق دارد نادرست است.
  • فقط کلیدهای سرور قدیمی — درخواست از سروری نشات گرفته است که در فهرست IPهای کلید سرور قرار ندارد.
بررسی کنید که رمزی که در هدر Authentication ارسال می کنید، کلید سرور صحیح مرتبط با پروژه شما باشد. برای جزئیات بیشتر به بررسی اعتبار کلید سرور مراجعه کنید. اگر از یک کلید سرور قدیمی استفاده می‌کنید، توصیه می‌شود آن را به یک کلید جدید ارتقا دهید که محدودیت IP ندارد. به انتقال کلیدهای سرور قدیمی مراجعه کنید.
فرستنده ناسازگار 200 + خطا: MismatchSenderId یک نشانه ثبت نام به گروه خاصی از فرستندگان گره خورده است. هنگامی که یک برنامه مشتری برای FCM ثبت نام می کند، باید مشخص کند که کدام فرستنده مجاز به ارسال پیام است. هنگام ارسال پیام به برنامه مشتری باید از یکی از آن شناسه های فرستنده استفاده کنید. اگر به فرستنده دیگری بروید، نشانه‌های ثبت‌نام موجود کار نمی‌کنند.
JSON نامعتبر است 400 بررسی کنید که پیام JSON به درستی قالب بندی شده باشد و حاوی فیلدهای معتبر باشد (به عنوان مثال، مطمئن شوید که نوع داده مناسب ارسال شده است).
پارامترهای نامعتبر 400 + خطا:InvalidParameters بررسی کنید که پارامترهای ارائه شده دارای نام و نوع مناسبی باشند.
پیام خیلی بزرگ است 200 + خطا: MessageTooBig بررسی کنید که حجم کل داده‌های محموله موجود در یک پیام از محدودیت‌های FCM تجاوز نکند: 4096 بایت برای اکثر پیام‌ها، یا 2048 بایت در مورد پیام‌ها به موضوعات. این شامل کلیدها و مقادیر می شود.
کلید داده نامعتبر است 200 + خطا:
InvalidDataKey
بررسی کنید که داده‌های محموله حاوی کلیدی (مانند from ، یا gcm ، یا هر مقداری که پیشوند google است) نباشد که به صورت داخلی توسط FCM استفاده می‌شود. توجه داشته باشید که برخی از کلمات (مانند collapse_key ) نیز توسط FCM استفاده می‌شوند اما در payload مجاز هستند، در این صورت مقدار payload با مقدار FCM لغو می‌شود.
زمان نامعتبر برای زندگی 200 + خطا: InvalidTtl بررسی کنید که مقدار استفاده شده در time_to_live یک عدد صحیح باشد که نشان دهنده مدت زمان در ثانیه بین 0 تا 2,419,200 (4 هفته) است.
تایم اوت 5xx یا 200 + خطا: در دسترس نیست

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

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

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

خطای سرور داخلی 500 یا 200 + خطا:InternalServerError سرور هنگام تلاش برای پردازش درخواست با خطایی مواجه شد. می‌توانید با پیروی از شرایط ذکر شده در «Timeout»، همان درخواست را دوباره امتحان کنید (به ردیف بالا مراجعه کنید). اگر خطا ادامه داشت، لطفاً با پشتیبانی Firebase تماس بگیرید.
نرخ پیام دستگاه بیش از حد است 200 + خطا:
DeviceMessageRate
فراتر رفت

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

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

نرخ پیام موضوعات بیشتر شد 200 + خطا:
TopicsMessage Rate
فراتر رفت
نرخ پیام به مشترکین یک موضوع خاص بسیار زیاد است. تعداد پیام های ارسال شده برای این موضوع را کاهش دهید و برای ارسال مجدد از عقب نشینی نمایی استفاده کنید.
اعتبارنامه های APN نامعتبر 200 + خطا:
InvalidApnsCredential
پیامی که برای دستگاه Apple مورد نظر است ارسال نشد زیرا کلید احراز هویت APN های مورد نیاز آپلود نشده بود یا منقضی شده است. اعتبار اعتبارنامه توسعه و تولید خود را بررسی کنید.

مدیریت گروه دستگاه

جدول زیر کلیدهای ایجاد گروه های دستگاه و افزودن و حذف اعضا را فهرست می کند. برای اطلاعات بیشتر، راهنمای پلتفرم، iOS+ یا Android خود را ببینید.

جدول 10. کلیدهای مدیریت گروه دستگاه.

پارامتر استفاده توضیحات
operation مورد نیاز، رشته عملیات اجرا می شود. مقادیر معتبر create ، add و remove می شوند.
notification_key_name مورد نیاز، رشته نام تعریف شده توسط کاربر گروه دستگاه برای ایجاد یا تغییر.
notification_key مورد نیاز (به جز برای عملیات create ، رشته شناسه منحصر به فرد گروه دستگاه. این مقدار در پاسخ برای یک عملیات create موفقیت آمیز برگردانده می شود و برای تمام عملیات های بعدی در گروه دستگاه لازم است.
registration_ids مورد نیاز، آرایه از رشته ها نشانه‌های دستگاه برای افزودن یا حذف. اگر تمام نشانه های ثبت نام موجود را از یک گروه دستگاه حذف کنید، FCM گروه دستگاه را حذف می کند.