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