با FCM، میتوانید دو نوع پیام به برنامههای کارخواه خود ارسال کنید:
- پیامهای اعلان، مشابه «پیامهای نمایش»، بهطور خودکار توسط FCM کیت توسعه نرمافزار مدیریت میشوند.
- پیامهای دادهای که توسط برنامه کارخواه مدیریت میشوند.
پیامهای اعلان حاوی مجموعهای از کلیدهای ازپیش تعریفشده قابلمشاهده برای کاربر هستند و میتوانند حاوی بار داده اختیاری باشند. درمقابل، پیامهای داده فقط حاوی جفتهای کلید-مقدار سفارشی تعریفشده توسط کاربر هستند. حداکثر بار مفید برای هر دو نوع پیام ۴۰۹۶ بایت است، بهجز هنگام ارسال پیام از کنسول 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"
}
}
}