با FCM، میتوانید دو نوع پیام به برنامههای کارخواه خود ارسال کنید:
- پیامهای اعلان، مشابه «پیامهای نمایشی»، بهطور خودکار توسط
FCM SDK مدیریت میشوند. (در Android با
AndroidConfigV2، ازRemoteNotificationبرای همه پیامهایی که اعلان قابلمشاهده برای کاربر را نمایش میدهند استفاده کنید تا بدون تأخیر موردنظر تحویل داده شوند؛ اعلانها بهطور خودکار نمایش داده میشوند، چه برنامه در پیشزمینه باشد یا پسزمینه، مگراینکه صریحاً در کد کارخواه بیصدا شده باشند.) - پیامهای دادهای که توسط برنامه کارخواه مدیریت میشوند.
پیامهای اعلان حاوی مجموعهای از کلیدهای ازپیش تعریفشده قابلمشاهده برای کاربر هستند و میتوانند حاوی بار داده اختیاری باشند. درمقابل، پیامهای داده فقط حاوی جفتهای کلید-مقدار سفارشی تعریفشده توسط کاربر هستند. حداکثر بار مفید برای هر دو نوع پیام ۴۰۹۶ بایت است، بهجز هنگام ارسال پیام از کنسول Firebase که محدودیت ۱۰۰۰ نویسه را اعمال میکند.
| استفاده از سناریو | نحوه ارسال | |
|---|---|---|
| پیام اعلان | FCM کیت توسعه نرمافزار پیام را ازطرف برنامه کارخواه وقتی در پسزمینه اجرا میشود به دستگاههای کاربر نهایی نشان میدهد. درغیراینصورت، اگر برنامه هنگام دریافت اعلان در پیشزمینه درحال اجرا باشد، کد برنامه رفتار را تعیین میکند. |
|
| پیام داده | برنامه کارخواه مسئول پردازش پیامهای داده است. پیامهای داده فقط جفتهای کلید-مقدار سفارشی دارند و نام کلید رزروشده ندارند (به زیر مراجعه کنید). | در محیطی مطمئن مثل
Cloud Functions
یا سرور برنامهتان، از
Firebase Admin SDK یا
HTTP v1 API استفاده کنید.
در درخواست ارسال، کلید data را تنظیم کنید.
|
وقتی میخواهید کیت توسعه نرمافزار FCM بهطور خودکار نمایش اعلان را در زمانی که برنامهتان در پسزمینه اجرا میشود مدیریت کند، میتوانید از پیامهای اعلان استفاده کنید. FCM میتواند پیام اعلان را با بار داده اختیاری ارسال کند. در چنین مواردی، FCM بار داده اعلان را نمایش میدهد و برنامه کارخواه بار داده را مدیریت میکند.
وقتی میخواهید پیامها را با کد برنامه کارخواه خودتان پردازش کنید، میتوانید از پیامهای داده استفاده کنید.
پیامهای اعلان
میتوانید پیامهای اعلان را بااستفاده از کنسول Firebase، Firebase Admin SDK، یا FCM HTTP v1 API ارسال کنید. کنسول Firebase آزمایش A/B مبتنی بر تجزیهوتحلیل را ارائه میدهد تا به شما کمک کند پیامهای اعلان خود را اصلاح و بهبود بخشید.
برای ارسال پیامهای اعلان بااستفاده از Firebase Admin SDK یا FCM
HTTP v1 API، کلید notification را با مجموعه ازپیشتعریفشده گزینههای کلید-مقدار
پیام اعلان تنظیم کنید. میتوانید از مثال زیر برای قالببندی
پیام اعلان در برنامه پیامرسانی فوری استفاده کنید
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
وقتی برنامه در پسزمینه باشد، پیامهای اعلان به سینی اعلان ارسال میشود. برای برنامههایی که در پیشزمینه هستند، پیامها توسط تابع بازخوانی مدیریت میشوند.
برای مشاهده فهرست کامل کلیدهای ازپیشتعریفشده موجود برای ساختن پیامهای اعلان، میتوانید از سند مرجع شیء اعلان FCM HTTP v1 API استفاده کنید.
پیامهای دادهای
اینکه چگونه میخواهید از بار داده FCM data برای پیادهسازی طرح رمزگذاری انتخابیتان استفاده کنید به شما بستگی دارد. مطمئن شوید که از هیچ کلمه رزروشدهای در
جفتهای کلید-مقدار سفارشیتان استفاده نکنید. کلمات رزروشده شامل 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"
}
}
}