إرسال الرسائل الأولية من تطبيق عميل Unity

إذا كان خادم تطبيقك ينفذ خادم اتصال XMPP، يمكنه استلام الرسائل الرئيسية من جهاز المستخدم إلى السحابة. لبدء رسالة رئيسية، يرسل تطبيق العميل طلبًا يحتوي على ما يلي:

  • عنوان خادم تطبيق الاستقبال بالتنسيق SENDER_ID@fcm.googleapis.com.
  • معرّف رسالة يجب أن يكون فريدًا لكل رقم تعريف مُرسِل.
  • بيانات الرسالة التي تتألف من أزواج المفتاح/القيمة لحمولة الرسالة

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

تخزّن مكتبة برامج "المراسلة عبر السحابة الإلكترونية من Firebase" الرسالة في ذاكرة التخزين المؤقت على تطبيق العميل وترسلها عندما يكون لدى العميل اتصال نشط بالخادم. عند استلام الرسالة، ترسلها خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" إلى خادم التطبيق.

تلقّي رسائل XMPP على خادم التطبيق

عندما تتلقى خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" مكالمة مراسلة سابقة من أحد تطبيقات العميل، تُنشئ معايير XMPP الضرورية لإرسال الرسالة الرئيسية. تضيف خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" الحقلين 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 تحتوي على معرِّف الرسالة. إذا لم تتلقَّ خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" ACK، قد تعيد محاولة الإرسال. الرسالة إلى خادم التطبيق.

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGID",
      "message_id":"m-123"
      "message_type":"ack"
  }
  </gcm>
</message>

يُرجى الاطّلاع على مرجع خادم اتصال XMPP لمزيد من المعلومات عن بنية الرسالة الأولية