अगर आपका ऐप्लिकेशन सर्वर XMPP कनेक्शन सर्वर प्रोटोकॉल, यह उपयोगकर्ता के डिवाइस से क्लाउड पर अपस्ट्रीम मैसेज रिसीव कर सकता है. अपस्ट्रीम मैसेज शुरू करने के लिए, क्लाइंट ऐप्लिकेशन एक अनुरोध भेजता है, जिसमें ये चीज़ें शामिल होती हैं:
[email protected]
फ़ॉर्मैट में, ऐक्सेस पाने वाले ऐप्लिकेशन सर्वर का पता.- एक मैसेज आईडी, जो हर भेजने वाले का आईडी के लिए अलग होना चाहिए.
- मैसेज डेटा में मैसेज के पेलोड के की-वैल्यू पेयर शामिल होते हैं.
जब FCM को यह डेटा मिलता है, तब वह ऐप्लिकेशन सर्वर को भेजने के लिए एक XMPP छंद बनाता है, भेजने वाले डिवाइस और ऐप्लिकेशन के बारे में कुछ अतिरिक्त जानकारी जोड़ना.
किसी Android क्लाइंट ऐप्लिकेशन से अपस्ट्रीम मैसेज भेजें
आपका Android ऐप्लिकेशन, इसका इस्तेमाल करके अपस्ट्रीम मैसेज भेज सकता है FirebaseMessaging.send:
Kotlin KTX
val fm = Firebase.messaging fm.send( remoteMessage("[email protected]") { 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 को ACK नहीं मिलता है, तो वह फिर से भेजने की कोशिश कर सकता है मैसेज को ऐप्लिकेशन सर्वर पर भेजा जाएगा.
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
XMPP कनेक्शन सर्वर संदर्भ देखें देखें.