Android पर अपस्ट्रीम मैसेज भेजना

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

अगर आपका ऐप्लिकेशन सर्वर XMPP कनेक्शन सर्वर प्रोटोकॉल, यह उपयोगकर्ता के डिवाइस से क्लाउड पर अपस्ट्रीम मैसेज रिसीव कर सकता है. अपस्ट्रीम मैसेज शुरू करने के लिए, क्लाइंट ऐप्लिकेशन एक अनुरोध भेजता है, जिसमें ये चीज़ें शामिल होती हैं:

  • SENDER_ID@fcm.googleapis.com फ़ॉर्मैट में, ऐक्सेस पाने वाले ऐप्लिकेशन सर्वर का पता.
  • एक मैसेज आईडी, जो हर भेजने वाले का आईडी के लिए अलग होना चाहिए.
  • मैसेज डेटा में मैसेज के पेलोड के की-वैल्यू पेयर शामिल होते हैं.

जब उसे यह डेटा मिलता है, तब FCM ऐप्लिकेशन सर्वर पर भेजने के लिए एक XMPP छंद बनाता है, भेजने वाले डिवाइस और ऐप्लिकेशन के बारे में कुछ अतिरिक्त जानकारी जोड़ना.

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

आपका Android ऐप्लिकेशन, इसका इस्तेमाल करके अपस्ट्रीम मैसेज भेज सकता है FirebaseMessaging.send:

Kotlin+KTX

val fm = Firebase.messaging
fm.send(
    remoteMessage("$SENDER_ID@fcm.googleapis.com") {
        setMessageId(messageId.toString())
        addData("my_message", "Hello World")
        addData("my_action", "SAY_HELLO")
    },
)

Java

FirebaseMessaging fm = FirebaseMessaging.getInstance();
fm.send(new RemoteMessage.Builder(SENDER_ID + "@fcm.googleapis.com")
        .setMessageId(Integer.toString(messageId))
        .addData("my_message", "Hello World")
        .addData("my_action","SAY_HELLO")
        .build());

अपस्ट्रीम मैसेज कॉलबैक मैनेज करना

FirebaseMessaging के साथ, आप अपस्ट्रीम का स्टेटस देखने के लिए, onMessageSent और onSendError कॉलबैक मैसेज. गड़बड़ी के मामलों में, onSendError, SendException दिखाता है डालें. उदाहरण के लिए, अगर क्लाइंट 20 मैसेज की सीमा पूरी होने के बाद और मैसेज भेजें, तो यह वापस आ जाता है SendException#ERROR_TOO_MANY_MESSAGES.

उन मामलों में जहां डिवाइस ऑफ़लाइन है या FCM सेवा उपलब्ध नहीं है अपस्ट्रीम मैसेज को अपने सर्वर पर फ़ॉरवर्ड करें, Android क्लाइंट ऐप्लिकेशन के इंस्टेंस ये कर सकते हैं ज़्यादा से ज़्यादा 20 ऐसे मैसेज इकट्ठा करें जिन्हें मंज़ूरी मिलना बाकी है. अगर ऐसे मैसेज की समयसीमा, FCM के भेजे जाने से पहले खत्म हो जाती है तो onSendError, SendException#ERROR_TTL_EXCEEDED नतीजे दिखाता है.

नेटवर्क के इस्तेमाल को ऑप्टिमाइज़ करने के लिए, FCM onMessageSent के जवाबों को बैच बनाता है और onSendError के बाद भी मैसेज को स्वीकार नहीं किया जाता है, इसलिए हो सकता है कि हर मैसेज के लिए सहमति तुरंत न मिले.

ऐप्स सर्वर पर 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 कनेक्शन सर्वर संदर्भ देखें देखें.