با FCM ، میتوانید دو نوع پیام به برنامههای کلاینت خود ارسال کنید:
- پیامهای اعلان، مشابه «پیامهای نمایشی»، بهطور خودکار توسط FCM SDK مدیریت میشوند.
- پیامهای دادهای، که توسط برنامهی کلاینت مدیریت میشوند.
پیامهای اعلان حاوی مجموعهای از کلیدهای از پیش تعریفشده برای کاربر هستند و میتوانند شامل یک دادهی اختیاری باشند. در مقابل، پیامهای داده فقط شامل جفتهای کلید-مقدار سفارشی تعریفشده توسط کاربر هستند. حداکثر حجم پیام برای هر دو نوع پیام ۴۰۹۶ بایت است، به جز هنگام ارسال پیام از کنسول Firebase که محدودیت ۱۰۰۰ کاراکتری را اعمال میکند.
| از سناریو استفاده کنید | نحوه ارسال | |
|---|---|---|
| پیام اعلان | FCM SDK وقتی برنامهی کلاینت در پسزمینه اجرا میشود، پیام را از طرف آن به دستگاههای کاربر نهایی نمایش میدهد. در غیر این صورت، اگر برنامه هنگام دریافت اعلان در پیشزمینه اجرا شود، کد برنامه رفتار را تعیین میکند. |
|
| پیام داده | برنامهی کلاینت مسئول پردازش پیامهای داده است. پیامهای داده فقط جفتهای کلید-مقدار سفارشی دارند و نام کلید رزرو شدهای ندارند (به پایین مراجعه کنید). | در یک محیط قابل اعتماد مانند Cloud Functions یا سرور برنامه خود، از Firebase Admin SDK یا HTTP v1 API استفاده کنید. در درخواست ارسال، کلید data را تنظیم کنید. |
وقتی میخواهید FCM SDK نمایش خودکار یک اعلان را هنگام اجرای برنامه در پسزمینه مدیریت کند، میتوانید از پیامهای اعلان استفاده کنید. FCM میتواند یک پیام اعلان با یک بار داده اختیاری ارسال کند. در چنین مواردی، FCM بار داده اعلان را نمایش میدهد و برنامه کلاینت بار داده را مدیریت میکند.
وقتی میخواهید پیامها را با کد برنامهی کلاینت خودتان پردازش کنید، میتوانید از پیامهای داده استفاده کنید.
پیامهای اعلان
شما میتوانید پیامهای اعلان را با استفاده از کنسول Firebase ، Firebase Admin SDK یا FCM HTTP v1 API ارسال کنید. کنسول Firebase تست A/B مبتنی بر تجزیه و تحلیل را ارائه میدهد تا به شما در اصلاح و بهبود پیامهای اعلان خود کمک کند.
برای ارسال پیامهای اعلان با استفاده از Firebase Admin SDK یا FCM HTTP v1 API، کلید notification را با مجموعهای از گزینههای از پیش تعریفشدهی کلید-مقدار پیام اعلان تنظیم کنید. میتوانید از مثال زیر برای قالببندی یک پیام اعلان در یک برنامهی IM استفاده کنید.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
پیامهای اعلان زمانی که برنامه در پسزمینه است به بخش اعلانها ارسال میشوند. برای برنامههایی که در پیشزمینه هستند، پیامها توسط یک تابع فراخوانی مدیریت میشوند.
برای مشاهده لیست کامل کلیدهای از پیش تعریف شده موجود برای ساخت پیامهای اعلان، میتوانید از مستندات مرجع شیء اعلان FCM HTTP v1 API استفاده کنید.
پیامهای دادهای
این به شما بستگی دارد که چگونه میخواهید از data بار داده FCM برای پیادهسازی طرح رمزگذاری مورد نظر خود استفاده کنید. مطمئن شوید که از هیچ کلمه رزرو شدهای در جفتهای کلید-مقدار سفارشی خود استفاده نمیکنید. کلمات رزرو شده شامل from ، message_type یا هر کلمهای که با google. ، gcm. یا gcm.notification. شروع میشود، میشوند.
مثال زیر نحوهی استفاده از فیلد دادهی سطح بالا یا مشترک را نشان میدهد که توسط کلاینتها در تمام پلتفرمهایی که پیام را دریافت میکنند، تفسیر میشود. در هر پلتفرم، برنامهی کلاینت، دادهی ارسالی را در یک تابع فراخوانی دریافت میکند.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
پیامهای اعلان با بار داده اختیاری
شما میتوانید پیامهای اعلانی را که حاوی یک payload اختیاری از جفتهای کلید-مقدار سفارشی هستند، به صورت برنامهنویسی یا با استفاده از کنسول Firebase ارسال کنید. در کامپوزر Notifications ، از فیلدهای داده سفارشی در گزینههای پیشرفته استفاده کنید.
رفتار برنامه هنگام دریافت پیامهایی که شامل اعلانها و دادههای مخرب هستند، به این بستگی دارد که آیا برنامه در پسزمینه است یا در پیشزمینه - اساساً، به این بستگی دارد که آیا در زمان دریافت فعال است یا خیر.
- وقتی برنامهها در پسزمینه هستند ، اعلانها را در قسمت اعلانها دریافت میکنند و فقط زمانی که کاربر روی اعلان ضربه میزند، دادهها را مدیریت میکنند.
- وقتی در پیشزمینه هستید ، برنامه شما یک شیء پیام با هر دو payload موجود دریافت میکند.
در اینجا یک پیام با فرمت JSON وجود دارد که شامل کلید notification و کلید data است:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}