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

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

  • عنوان خادم تطبيق الاستقبال بالتنسيق 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 للحصول على مزيد من المعلومات حول بنية الرسائل الأولية.