यदि आपका ऐप सर्वर 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>
एसीके संदेश भेजा जा रहा है
उपरोक्त जैसे अपस्ट्रीम संदेश के जवाब में, ऐप सर्वर को अद्वितीय संदेश आईडी वाले एसीके संदेश भेजने के लिए उसी कनेक्शन का उपयोग करना चाहिए। यदि FCM को ACK प्राप्त नहीं होता है, तो वह ऐप सर्वर को संदेश भेजने का पुनः प्रयास कर सकता है।
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
अपस्ट्रीम संदेश सिंटैक्स के बारे में अधिक जानकारी के लिए XMPP कनेक्शन सर्वर संदर्भ देखें।