إذا كان خادم تطبيقك ينفِّذ بروتوكول 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
استجابةً لرسالة من الأعلى مثل الرسالة أعلاه، يجب أن يستخدم خادم التطبيق الاتصال نفسه لإرسال رسالة تأكيد تحتوي على معرّف الرسالة الفريد. إذا لم يتلقّى FCM إشعارًا بالتأكيد، قد يحاول مرة أخرى إرسال الرسالة إلى خادم التطبيق.
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
اطّلِع على مرجع خادم اتصال XMPP لمزيد من المعلومات حول بنية الرسائل الواردة.