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