إذا كان خادم التطبيق الخاص بك ينفذ بروتوكول خادم اتصال XMPP ، فيمكنه تلقي رسائل أولية من جهاز المستخدم إلى السحابة. لبدء رسالة أولية ، يرسل تطبيق العميل طلبًا يحتوي على ما يلي:
- عنوان خادم التطبيق المستلم بالتنسيق
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 للحصول على مزيد من المعلومات حول بناء جملة الرسائل الأولية.