Unity क्लाइंट ऐप्लिकेशन से अपस्ट्रीम मैसेज भेजें

अगर आपका ऐप्लिकेशन सर्वर 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 कनेक्शन सर्वर रेफ़रंस देखें.