اگر سرور برنامه شما پروتکل XMPP Connection Server را پیاده سازی کند، می تواند پیام های بالادستی را از دستگاه کاربر به فضای ابری دریافت کند. برای شروع یک پیام بالادستی، برنامه مشتری درخواستی حاوی موارد زیر ارسال می کند:
- آدرس سرور برنامه دریافت کننده در قالب
SENDER_ID@fcm.googleapis.com
. - شناسه پیامی که باید برای هر شناسه فرستنده منحصر به فرد باشد.
- دادههای پیام شامل جفتهای کلید-مقدار محموله پیام است.
هنگامی که FCM این داده ها را دریافت می کند، یک مصراع XMPP برای ارسال به سرور برنامه ایجاد می کند و اطلاعات اضافی درباره دستگاه و برنامه ارسال کننده اضافه می کند.
یک پیام بالادستی از یک برنامه مشتری Unity ارسال کنید
برای ارسال پیامها در بالادست به سرور، یک برنامه کلاینت Unity یک پیام مینویسد و مطابق شکل Send
فراخوانی میکند:
Firebase.Messaging.Message message;
message.To = SENDER_ID + "@fcm.googleapis.com";
message.MessageId = get_unique_message_id();
message.Data("my_message", "Hello World");
message.Data("my_action", "SAY HELLO");
message.TimeToLive = kTimetoLive;
Firebase.Messaging.FirebaseMessaging.Send(message);
کجا:
message.To
آدرس سرور برنامه دریافت کننده در قالبSENDER_ID@fcm.googleapis.com
است.message.MessageId
یک شناسه پیام منحصر به فرد است. تمام تماس های گیرنده پیام بر اساس این شناسه پیام شناسایی می شوند.message.Data
نقشه ای از کلیدها و مقادیر به صورت رشته است.message.TimeToLive
مشخص می کند که در صورت آفلاین بودن دستگاه، چه مدت (بر حسب ثانیه) پیام باید در فضای ذخیره سازی FCM نگهداری شود. اگر FCM نتواند پیام را قبل از اتمام این انقضا ارسال کند، یک اعلان به مشتری ارسال می کند.
کتابخانه مشتری FCM پیام را در برنامه مشتری ذخیره می کند و زمانی که مشتری یک اتصال سرور فعال داشته باشد، آن را ارسال می کند. با دریافت پیام، FCM آن را به سرور برنامه ارسال می کند.
پیام های XMPP را در سرور برنامه دریافت کنید
هنگامی که FCM یک تماس پیام رسانی بالادستی از یک برنامه مشتری دریافت می کند، مصراع XMPP لازم برای ارسال پیام بالادستی را تولید می کند. FCM category
و from
فیلدها را اضافه می کند و سپس یک بند مانند زیر را به سرور برنامه ارسال می کند:
<message id=""> <gcm xmlns="google:mobile:data"> { "category":"com.example.yourapp", // to know which app sent it "data": { "hello":"world", }, "message_id":"m-123", "from":"REGID" } </gcm> </message>
ارسال پیام ACK
در پاسخ به یک پیام بالادستی مانند موارد بالا، سرور برنامه باید از همان اتصال برای ارسال یک پیام ACK حاوی شناسه پیام منحصر به فرد استفاده کند. اگر FCM ACK دریافت نکند، ممکن است دوباره سعی کند پیام را به سرور برنامه ارسال کند.
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
برای اطلاعات بیشتر در مورد نحو پیام بالادستی به مرجع XMPP Connection Server مراجعه کنید.