إذا كان خادم تطبيقك ينفِّذ بروتوكول 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 لمزيد من المعلومات حول بنية الرسائل الواردة.