Android पर अपस्ट्रीम संदेश भेजना

यदि आपका ऐप सर्वर औजार XMPP कनेक्शन सर्वर प्रोटोकॉल, यह बादल करने के लिए एक उपयोगकर्ता के उपकरण से नदी के ऊपर संदेश प्राप्त कर सकते हैं। एक अपस्ट्रीम संदेश आरंभ करने के लिए, क्लाइंट ऐप निम्नलिखित के साथ एक अनुरोध भेजता है:

  • प्रारूप में प्राप्त एप्लिकेशन सर्वर के पते SENDER_ID@fcm.googleapis.com
  • एक संदेश आईडी प्रत्येक के लिए अद्वितीय होना चाहिए कि प्रेषक आईडी
  • संदेश डेटा जिसमें संदेश के पेलोड के कुंजी-मूल्य जोड़े शामिल होते हैं।

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

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

अपने Android एप्लिकेशन को अपस्ट्रीम संदेश का उपयोग कर भेज सकते हैं FirebaseMessaging.send :

जावा

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());

कोटलिन + केटीएक्स

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")
})

अपस्ट्रीम संदेश कॉलबैक को संभालें

साथ FirebaseMessaging , आप कॉलबैक लागू कर सकते हैं onMessageSent और onSendError नदी के ऊपर संदेशों की स्थिति की जांच करने के लिए। त्रुटि मामलों में, onSendError रिटर्न एक SendException गलत कोड के साथ। उदाहरण के लिए, अगर ग्राहक प्रयास 20-संदेश सीमा के बाद अधिक संदेश भेजने के लिए पहुँच जाता है, यह रिटर्न SendException#ERROR_TOO_MANY_MESSAGES

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

अनुकूलन नेटवर्क उपयोग करने के लिए, करने के लिए FCM बैचों प्रतिक्रियाओं onMessageSent और onSendError , तो रसीद नहीं प्रत्येक संदेश के लिए तत्काल हो सकता है।

ऐप सर्वर पर एक्सएमपीपी संदेश प्राप्त करें

जब 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>

एक एसीके संदेश भेजना

ऊपर की तरह एक अपस्ट्रीम संदेश के जवाब में, ऐप सर्वर को एक ही कनेक्शन का उपयोग करके एक अद्वितीय संदेश आईडी युक्त एसीके संदेश भेजना चाहिए। यदि FCM को ACK प्राप्त नहीं होता है, तो वह ऐप सर्वर पर संदेश भेजने का पुनः प्रयास कर सकता है।

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

देखें XMPP कनेक्शन सर्वर संदर्भ नदी के ऊपर संदेश सिंटैक्स के बारे में अधिक जानकारी के लिए।