फायरबेस क्लाउड मैसेजिंग एक्सएमपीपी प्रोटोकॉल

यह दस्तावेज़ आपके ऐप सर्वर, क्लाइंट ऐप और फायरबेस क्लाउड मैसेजिंग (एफसीएम) के बीच संदेश भेजने के लिए उपयोग किए जाने वाले एक्सएमपीपी सिंटैक्स के लिए एक संदर्भ प्रदान करता है। आपके ऐप सर्वर को इन एंडपॉइंट से कनेक्ट होना चाहिए:

// Production
fcm-xmpp.googleapis.com:5235

// Testing
fcm-xmpp.googleapis.com:5236

उपलब्ध पैरामीटर और विकल्प इन श्रेणियों में आते हैं:

डाउनस्ट्रीम संदेश सिंटैक्स

यह अनुभाग डाउनस्ट्रीम संदेश भेजने के लिए सिंटैक्स देता है।

डाउनस्ट्रीम XMPP संदेश (JSON)

निम्न तालिका XMPP JSON संदेशों के लिए लक्ष्य, विकल्प और पेलोड सूचीबद्ध करती है।

तालिका 1 डाउनस्ट्रीम एक्सएमपीपी संदेशों (जेएसओएन) के लिए लक्ष्य, विकल्प और पेलोड।

पैरामीटर प्रयोग विवरण
लक्ष्य
to वैकल्पिक, स्ट्रिंग

यह पैरामीटर संदेश के प्राप्तकर्ता को निर्दिष्ट करता है।

मान एक डिवाइस का पंजीकरण टोकन, एक डिवाइस समूह की अधिसूचना कुंजी, या एक एकल विषय ( /topics/ के साथ उपसर्ग) हो सकता है। एकाधिक विषयों को भेजने के लिए, condition पैरामीटर का उपयोग करें।

condition वैकल्पिक, स्ट्रिंग

यह पैरामीटर शर्तों की तार्किक अभिव्यक्ति निर्दिष्ट करता है जो संदेश लक्ष्य निर्धारित करता है।

समर्थित शर्त: विषय, विषयों में "'आपका विषय'' के रूप में स्वरूपित। यह मान केस-असंवेदनशील है.

समर्थित ऑपरेटर: && , || . प्रति विषय संदेश अधिकतम दो ऑपरेटर समर्थित।

विकल्प
message_id आवश्यक, स्ट्रिंग

यह पैरामीटर एक्सएमपीपी कनेक्शन में एक संदेश को विशिष्ट रूप से पहचानता है।

collapse_key वैकल्पिक, स्ट्रिंग

यह पैरामीटर संदेशों के एक समूह की पहचान करता है (उदाहरण के लिए, collapse_key: "Updates Available" ) जिसे संक्षिप्त किया जा सकता है ताकि डिलीवरी फिर से शुरू होने पर केवल अंतिम संदेश भेजा जा सके। इसका उद्देश्य यह है कि जब डिवाइस वापस ऑनलाइन आए या निष्क्रिय अवस्था में आए तो एक ही तरह के बहुत सारे संदेश भेजने से बचा जाए।

संदेश किस क्रम में भेजे जाएंगे इसकी कोई गारंटी नहीं है।

ध्यान दें: किसी भी समय अधिकतम 4 अलग-अलग संक्षिप्त कुंजियों की अनुमति है। इसका मतलब है कि एफसीएम एक साथ प्रति क्लाइंट ऐप पर 4 अलग-अलग संदेश संग्रहीत कर सकता है। यदि आप इस संख्या को पार कर जाते हैं, तो इसकी कोई गारंटी नहीं है कि एफसीएम कौन सी 4 पतन कुंजियाँ रखेगा।

priority वैकल्पिक, स्ट्रिंग

संदेश की प्राथमिकता निर्धारित करता है. मान्य मान "सामान्य" और "उच्च" हैं। Apple प्लेटफ़ॉर्म पर, ये APN की प्राथमिकताएँ 5 और 10 के अनुरूप हैं।

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

जब कोई संदेश उच्च प्राथमिकता के साथ भेजा जाता है, तो उसे तुरंत भेज दिया जाता है, और ऐप एक अधिसूचना प्रदर्शित कर सकता है।

content_available वैकल्पिक, बूलियन

Apple प्लेटफ़ॉर्म पर, APNs पेलोड में content-available दर्शाने के लिए इस फ़ील्ड का उपयोग करें। जब कोई अधिसूचना या संदेश भेजा जाता है और इसे true पर सेट किया जाता है, तो एक निष्क्रिय क्लाइंट ऐप जागृत हो जाता है, और संदेश एपीएन के माध्यम से एक मूक अधिसूचना के रूप में भेजा जाता है, न कि एफसीएम के माध्यम से। ध्यान दें कि एपीएन में मूक सूचनाएं वितरित होने की गारंटी नहीं है, और यह उपयोगकर्ता द्वारा लो पावर मोड चालू करने, ऐप को जबरदस्ती छोड़ने आदि जैसे कारकों पर निर्भर हो सकता है। एंड्रॉइड पर, डेटा संदेश ऐप को डिफ़ॉल्ट रूप से सक्रिय करते हैं। Chrome पर, वर्तमान में समर्थित नहीं है.

mutable_content वैकल्पिक, JSON बूलियन

Apple प्लेटफ़ॉर्म पर, APNs पेलोड में mutable-content प्रतिनिधित्व करने के लिए इस फ़ील्ड का उपयोग करें। जब कोई अधिसूचना भेजी जाती है और इसे true पर सेट किया जाता है, तो अधिसूचना सेवा ऐप एक्सटेंशन का उपयोग करके अधिसूचना की सामग्री को प्रदर्शित होने से पहले संशोधित किया जा सकता है। एंड्रॉइड और वेब के लिए इस पैरामीटर को नजरअंदाज कर दिया जाएगा।

time_to_live वैकल्पिक, संख्या

यह पैरामीटर निर्दिष्ट करता है कि यदि डिवाइस ऑफ़लाइन है तो संदेश को कितनी देर तक (सेकंड में) FCM स्टोरेज में रखा जाना चाहिए। समर्थित रहने का अधिकतम समय 4 सप्ताह है, और डिफ़ॉल्ट मान 4 सप्ताह है। अधिक जानकारी के लिए, संदेश का जीवनकाल निर्धारित करना देखें।

dry_run वैकल्पिक, बूलियन

यह पैरामीटर, जब true पर सेट किया जाता है, तो डेवलपर्स को वास्तव में कोई संदेश भेजे बिना अनुरोध का परीक्षण करने की अनुमति मिलती है।

मूल मूल्य false है ।

पेलोड
data वैकल्पिक, वस्तु

यह पैरामीटर संदेश के पेलोड के कुंजी-मूल्य जोड़े को निर्दिष्ट करता है।

उदाहरण के लिए, data:{"score":"3x1"}:

Apple प्लेटफ़ॉर्म पर, यदि संदेश APNs द्वारा वितरित किया जाता है, तो यह कस्टम डेटा फ़ील्ड का प्रतिनिधित्व करता है। यदि यह FCM द्वारा वितरित किया जाता है, तो इसे AppDelegate application:didReceiveRemoteNotification: में एक मुख्य मान शब्दकोश के रूप में दर्शाया जाता है।

एंड्रॉइड पर, इसका परिणाम स्ट्रिंग मान 3x1 के साथ score नाम का एक अतिरिक्त उद्देश्य होता है।

कुंजी एक आरक्षित शब्द ("से", "message_type", या "google" या "gcm") से शुरू होने वाला कोई शब्द नहीं होना चाहिए। इस तालिका में परिभाषित किसी भी शब्द (जैसे collapse_key ) का उपयोग न करें।

स्ट्रिंग प्रकारों में मानों की अनुशंसा की जाती है. आपको ऑब्जेक्ट या अन्य गैर-स्ट्रिंग डेटा प्रकारों (उदाहरण के लिए, पूर्णांक या बूलियन) के मानों को स्ट्रिंग में परिवर्तित करना होगा।

notification वैकल्पिक, वस्तु यह पैरामीटर अधिसूचना पेलोड के पूर्वनिर्धारित, उपयोगकर्ता-दृश्यमान कुंजी-मूल्य जोड़े को निर्दिष्ट करता है। विवरण के लिए अधिसूचना पेलोड समर्थन देखें। अधिसूचना संदेश और डेटा संदेश विकल्पों के बारे में अधिक जानकारी के लिए, संदेश प्रकार देखें। यदि एक अधिसूचना पेलोड प्रदान किया गया है, या Apple डिवाइस पर किसी संदेश के लिए content_available विकल्प true पर सेट है, तो संदेश APNs के माध्यम से भेजा जाता है, अन्यथा यह FCM के माध्यम से भेजा जाता है।

अधिसूचना पेलोड समर्थन

निम्नलिखित तालिकाएँ Apple प्लेटफ़ॉर्म और Android के लिए अधिसूचना संदेश बनाने के लिए उपलब्ध पूर्वनिर्धारित कुंजियों को सूचीबद्ध करती हैं।

तालिका 2ए. Apple - अधिसूचना संदेशों के लिए कुंजियाँ

पैरामीटर प्रयोग विवरण
title वैकल्पिक, स्ट्रिंग

अधिसूचना का शीर्षक.

यह फ़ील्ड फ़ोन और टैबलेट पर दिखाई नहीं देती है.

body वैकल्पिक, स्ट्रिंग

अधिसूचना का मुख्य पाठ.

sound वैकल्पिक, स्ट्रिंग

डिवाइस को सूचना मिलने पर बजने वाली ध्वनि।

क्लाइंट ऐप के मुख्य बंडल में या ऐप के डेटा कंटेनर के Library/Sounds फ़ोल्डर में ध्वनि फ़ाइलों को निर्दिष्ट करने वाली स्ट्रिंग। अधिक जानकारी के लिए iOS डेवलपर लाइब्रेरी देखें।

badge वैकल्पिक, स्ट्रिंग

होम स्क्रीन ऐप आइकन पर बैज का मान।

यदि निर्दिष्ट नहीं है, तो बैज नहीं बदला जाता है।

यदि 0 पर सेट किया जाता है, तो बैज हटा दिया जाता है।

click_action वैकल्पिक, स्ट्रिंग

उपयोगकर्ता से जुड़ी कार्रवाई अधिसूचना पर क्लिक करती है।

एपीएन पेलोड में category के अनुरूप है।

subtitle वैकल्पिक, स्ट्रिंग

अधिसूचना का उपशीर्षक.

body_loc_key वैकल्पिक, स्ट्रिंग

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार बॉडी टेक्स्ट को स्थानीयकृत करने के लिए ऐप के स्ट्रिंग संसाधनों में बॉडी स्ट्रिंग की कुंजी।

एपीएन पेलोड में loc-key के अनुरूप है।

अधिक जानकारी के लिए पेलोड कुंजी संदर्भ और अपने दूरस्थ सूचनाओं की सामग्री का स्थानीयकरण देखें।

body_loc_args वैकल्पिक, स्ट्रिंग के रूप में JSON सरणी

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार बॉडी टेक्स्ट को स्थानीयकृत करने के लिए body_loc_key में प्रारूप विनिर्देशकों के स्थान पर परिवर्तनीय स्ट्रिंग मानों का उपयोग किया जाना चाहिए।

एपीएन पेलोड में loc-args से मेल खाता है।

अधिक जानकारी के लिए पेलोड कुंजी संदर्भ और अपने दूरस्थ सूचनाओं की सामग्री का स्थानीयकरण देखें।

title_loc_key वैकल्पिक, स्ट्रिंग

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार शीर्षक पाठ को स्थानीयकृत करने के लिए ऐप के स्ट्रिंग संसाधनों में शीर्षक स्ट्रिंग की कुंजी।

एपीएन पेलोड में title-loc-key के अनुरूप है।

अधिक जानकारी के लिए पेलोड कुंजी संदर्भ और अपने दूरस्थ सूचनाओं की सामग्री का स्थानीयकरण देखें।

title_loc_args वैकल्पिक, स्ट्रिंग के रूप में JSON सरणी

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार शीर्षक पाठ को स्थानीयकृत करने के लिए title_loc_key में प्रारूप विनिर्देशकों के स्थान पर परिवर्तनीय स्ट्रिंग मानों का उपयोग किया जाना चाहिए।

एपीएन पेलोड में title-loc-args के अनुरूप है।

अधिक जानकारी के लिए पेलोड कुंजी संदर्भ और अपने दूरस्थ सूचनाओं की सामग्री का स्थानीयकरण देखें।

तालिका 2बी. एंड्रॉइड - अधिसूचना संदेशों के लिए कुंजियाँ

पैरामीटर प्रयोग विवरण
title वैकल्पिक, स्ट्रिंग

अधिसूचना का शीर्षक.

body वैकल्पिक, स्ट्रिंग

अधिसूचना का मुख्य पाठ.

android_channel_id वैकल्पिक, स्ट्रिंग

अधिसूचना की चैनल आईडी (एंड्रॉइड ओ में नई)।

इस चैनल आईडी के साथ कोई भी अधिसूचना प्राप्त होने से पहले ऐप को इस चैनल आईडी के साथ एक चैनल बनाना होगा।

यदि आप अनुरोध में यह चैनल आईडी नहीं भेजते हैं, या यदि प्रदान की गई चैनल आईडी अभी तक ऐप द्वारा नहीं बनाई गई है, तो एफसीएम ऐप मेनिफेस्ट में निर्दिष्ट चैनल आईडी का उपयोग करता है।

icon वैकल्पिक, स्ट्रिंग

अधिसूचना का चिह्न.

खींचने योग्य संसाधन myicon के लिए अधिसूचना आइकन को myicon पर सेट करता है। यदि आप अनुरोध में यह कुंजी नहीं भेजते हैं, तो एफसीएम आपके ऐप मेनिफेस्ट में निर्दिष्ट लॉन्चर आइकन प्रदर्शित करता है।

sound वैकल्पिक, स्ट्रिंग

डिवाइस को सूचना मिलने पर बजने वाली ध्वनि।

"default" या ऐप में बंडल किए गए ध्वनि संसाधन के फ़ाइल नाम का समर्थन करता है। ध्वनि फ़ाइलें /res/raw/ में होनी चाहिए।

tag वैकल्पिक, स्ट्रिंग

अधिसूचना ड्रॉअर में मौजूदा सूचनाओं को बदलने के लिए पहचानकर्ता का उपयोग किया जाता है।

यदि निर्दिष्ट नहीं है, तो प्रत्येक अनुरोध एक नई अधिसूचना बनाता है।

यदि निर्दिष्ट किया गया है और उसी टैग के साथ एक अधिसूचना पहले से ही दिखाई जा रही है, तो नई अधिसूचना अधिसूचना ड्रॉअर में मौजूदा अधिसूचना को बदल देती है।

color वैकल्पिक, स्ट्रिंग

अधिसूचना का आइकन रंग, #rrggbb प्रारूप में व्यक्त किया गया है।

click_action वैकल्पिक, स्ट्रिंग

उपयोगकर्ता से जुड़ी कार्रवाई अधिसूचना पर क्लिक करती है।

यदि निर्दिष्ट किया गया है, तो जब कोई उपयोगकर्ता अधिसूचना पर क्लिक करता है तो मिलान इरादे वाले फ़िल्टर वाली एक गतिविधि लॉन्च की जाती है।

body_loc_key वैकल्पिक, स्ट्रिंग

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार बॉडी टेक्स्ट को स्थानीयकृत करने के लिए ऐप के स्ट्रिंग संसाधनों में बॉडी स्ट्रिंग की कुंजी।

अधिक जानकारी के लिए स्ट्रिंग संसाधन देखें।

body_loc_args वैकल्पिक, स्ट्रिंग के रूप में JSON सरणी

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार बॉडी टेक्स्ट को स्थानीयकृत करने के लिए body_loc_key में प्रारूप विनिर्देशकों के स्थान पर परिवर्तनीय स्ट्रिंग मानों का उपयोग किया जाना चाहिए।

अधिक जानकारी के लिए फ़ॉर्मेटिंग और स्टाइलिंग देखें।

title_loc_key वैकल्पिक, स्ट्रिंग

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार शीर्षक पाठ को स्थानीयकृत करने के लिए ऐप के स्ट्रिंग संसाधनों में शीर्षक स्ट्रिंग की कुंजी।

अधिक जानकारी के लिए स्ट्रिंग संसाधन देखें।

title_loc_args वैकल्पिक, स्ट्रिंग के रूप में JSON सरणी

उपयोगकर्ता के वर्तमान स्थानीयकरण के अनुसार शीर्षक पाठ को स्थानीयकृत करने के लिए title_loc_key में प्रारूप विनिर्देशकों के स्थान पर परिवर्तनीय स्ट्रिंग मानों का उपयोग किया जाना चाहिए।

अधिक जानकारी के लिए फ़ॉर्मेटिंग और स्टाइलिंग देखें।

तालिका 2सी. वेब (जावास्क्रिप्ट) - अधिसूचना संदेशों के लिए कुंजियाँ

पैरामीटर प्रयोग विवरण
title वैकल्पिक, स्ट्रिंग

अधिसूचना का शीर्षक.

body वैकल्पिक, स्ट्रिंग

अधिसूचना का मुख्य पाठ.

icon वैकल्पिक, स्ट्रिंग

अधिसूचना आइकन के लिए उपयोग किया जाने वाला URL.

click_action वैकल्पिक, स्ट्रिंग

उपयोगकर्ता से जुड़ी कार्रवाई अधिसूचना पर क्लिक करती है।

सभी यूआरएल मानों के लिए, HTTPS आवश्यक है।

डाउनस्ट्रीम XMPP संदेश प्रतिक्रिया की व्याख्या करें

निम्न तालिका उन फ़ील्ड को सूचीबद्ध करती है जो डाउनस्ट्रीम XMPP संदेश प्रतिक्रिया में दिखाई देते हैं।

तालिका 3 डाउनस्ट्रीम संदेश एक्सएमपीपी प्रतिक्रिया निकाय।

पैरामीटर प्रयोग विवरण
from आवश्यक, स्ट्रिंग

यह पैरामीटर निर्दिष्ट करता है कि यह प्रतिक्रिया किसने भेजी है।

मान क्लाइंट ऐप का पंजीकरण टोकन है।

message_id आवश्यक, स्ट्रिंग यह पैरामीटर एक्सएमपीपी कनेक्शन में एक संदेश को विशिष्ट रूप से पहचानता है। मान एक स्ट्रिंग है जो विशिष्ट रूप से संबंधित संदेश की पहचान करता है।
message_type आवश्यक, स्ट्रिंग

यह पैरामीटर एफसीएम से ऐप सर्वर पर एक ack या nack संदेश निर्दिष्ट करता है।

यदि मान nack पर सेट है, तो ऐप सर्वर को विफलता की जानकारी प्राप्त करने के लिए error और error_description देखना चाहिए।

error वैकल्पिक, स्ट्रिंग यह पैरामीटर डाउनस्ट्रीम संदेश से संबंधित त्रुटि निर्दिष्ट करता है। यह तब सेट होता है जब message_type nack है। विवरण के लिए तालिका 4 देखें.
error_description वैकल्पिक, स्ट्रिंग यह पैरामीटर त्रुटि के लिए वर्णनात्मक जानकारी प्रदान करता है। यह तब सेट होता है जब message_type nack है।

डाउनस्ट्रीम संदेश त्रुटि प्रतिक्रिया कोड

निम्न तालिका डाउनस्ट्रीम संदेशों के लिए त्रुटि प्रतिक्रिया कोड सूचीबद्ध करती है।

तालिका 4 डाउनस्ट्रीम संदेश त्रुटि प्रतिक्रिया कोड।

गलती एक्सएमपीपी कोड अनुशंसित कार्रवाई
पंजीकरण टोकन गुम है INVALID_JSON जांचें कि अनुरोध में एक पंजीकरण टोकन है (सादे पाठ संदेश में registration_id में, या JSON में to या registration_ids फ़ील्ड में)।
अमान्य एपीएन पंजीकरण INVALID_JSON आईओएस पंजीकरण के लिए, जांचें कि क्लाइंट के पंजीकरण अनुरोध में वैध एपीएन टोकन और एप्लिकेशन आईडी शामिल है।
अमान्य पंजीकरण टोकन BAD_REGISTRATION आपके द्वारा सर्वर को भेजे गए पंजीकरण टोकन के प्रारूप की जाँच करें। सुनिश्चित करें कि यह एफसीएम के साथ पंजीकरण करने पर क्लाइंट ऐप को प्राप्त पंजीकरण टोकन से मेल खाता है। अतिरिक्त अक्षर न काटें या न जोड़ें।
अपंजीकृत डिवाइस DEVICE_UNREGISTERED मौजूदा पंजीकरण टोकन कई परिदृश्यों में मान्य होना बंद हो सकता है, जिनमें शामिल हैं:
  • यदि क्लाइंट ऐप FCM के साथ अपंजीकृत हो जाता है।
  • यदि क्लाइंट ऐप स्वचालित रूप से अपंजीकृत है, जो तब हो सकता है जब उपयोगकर्ता एप्लिकेशन को अनइंस्टॉल कर देता है। उदाहरण के लिए, iOS पर, यदि APNs ने APNs टोकन को अमान्य बताया है।
  • यदि पंजीकरण टोकन समाप्त हो जाता है (उदाहरण के लिए, Google पंजीकरण टोकन को ताज़ा करने का निर्णय ले सकता है, या उपकरणों के लिए एपीएन टोकन समाप्त हो गया है)।
  • यदि क्लाइंट ऐप अपडेट किया गया है, लेकिन नया संस्करण संदेश प्राप्त करने के लिए कॉन्फ़िगर नहीं किया गया है।
इन सभी मामलों के लिए, इस पंजीकरण टोकन को ऐप सर्वर से हटा दें और संदेश भेजने के लिए इसका उपयोग बंद कर दें।
बेमेल प्रेषक SENDER_ID_MISMATCH एक पंजीकरण टोकन प्रेषकों के एक निश्चित समूह से जुड़ा होता है। जब कोई क्लाइंट ऐप FCM के लिए पंजीकृत होता है, तो उसे यह निर्दिष्ट करना होगा कि किन प्रेषकों को संदेश भेजने की अनुमति है। क्लाइंट ऐप पर संदेश भेजते समय आपको उन प्रेषक आईडी में से एक का उपयोग करना चाहिए। यदि आप किसी भिन्न प्रेषक पर स्विच करते हैं, तो मौजूदा पंजीकरण टोकन काम नहीं करेंगे।
अमान्य JSON INVALID_JSON जांचें कि JSON संदेश ठीक से स्वरूपित है और इसमें वैध फ़ील्ड शामिल हैं (उदाहरण के लिए, यह सुनिश्चित करना कि सही डेटा प्रकार पास किया गया है)।
संदेश बहुत बड़ा INVALID_JSON जांचें कि किसी संदेश में शामिल पेलोड डेटा का कुल आकार एफसीएम सीमा से अधिक नहीं है: अधिकांश संदेशों के लिए 4096 बाइट्स या विषयों के संदेशों के मामले में 2048 बाइट्स। इसमें कुंजियाँ और मान दोनों शामिल हैं।
अमान्य डेटा कुंजी INVALID_JSON जांचें कि पेलोड डेटा में कोई कुंजी (जैसे कि from , gcm , या google द्वारा उपसर्ग किया गया कोई मान) नहीं है जिसका उपयोग FCM द्वारा आंतरिक रूप से किया जाता है। ध्यान दें कि कुछ शब्द (जैसे collapse_key ) भी एफसीएम द्वारा उपयोग किए जाते हैं लेकिन पेलोड में अनुमति दी जाती है, जिस स्थिति में पेलोड मान एफसीएम मान से ओवरराइड हो जाता है।
जीने का अमान्य समय INVALID_JSON जांचें कि time_to_live में प्रयुक्त मान एक पूर्णांक है जो 0 और 2,419,200 (4 सप्ताह) के बीच सेकंड में अवधि का प्रतिनिधित्व करता है।
ख़राब ACK संदेश BAD_ACK पुन: प्रयास करने से पहले जांच लें कि ack संदेश ठीक से स्वरूपित है। विवरण के लिए तालिका 6 देखें।
समय समाप्त SERVICE_UNAVAILABLE

सर्वर समय पर अनुरोध संसाधित नहीं कर सका. उसी अनुरोध को पुनः प्रयास करें, लेकिन आपको यह करना होगा:

  • अपने पुनः प्रयास तंत्र में घातीय बैकऑफ़ लागू करें। (उदाहरण के लिए यदि आपने पहले पुनः प्रयास से पहले एक सेकंड प्रतीक्षा की, तो अगले प्रयास से पहले कम से कम दो सेकंड प्रतीक्षा करें, फिर चार सेकंड, और इसी तरह)। यदि आप एकाधिक संदेश भेज रहे हैं, तो एक ही समय में सभी संदेशों के लिए नया अनुरोध जारी करने से बचने के लिए प्रत्येक को स्वतंत्र रूप से अतिरिक्त यादृच्छिक राशि से विलंबित करें।
  • प्रारंभिक पुनः प्रयास विलंब को एक सेकंड पर सेट किया जाना चाहिए।

ध्यान दें: समस्या पैदा करने वाले प्रेषकों को काली सूची में डाले जाने का जोखिम है।

आंतरिक सर्वर त्रुटि INTERNAL_SERVER_
ERROR
अनुरोध को संसाधित करने का प्रयास करते समय सर्वर को एक त्रुटि का सामना करना पड़ा। आप "टाइमआउट" में सूचीबद्ध आवश्यकताओं का पालन करते हुए उसी अनुरोध का पुनः प्रयास कर सकते हैं (ऊपर पंक्ति देखें)।
डिवाइस संदेश दर पार हो गई DEVICE_MESSAGE_RATE
_EXCEEDED
किसी विशेष डिवाइस पर संदेशों की दर बहुत अधिक है. इस डिवाइस पर भेजे गए संदेशों की संख्या कम करें, और तुरंत इस डिवाइस पर भेजने का पुनः प्रयास न करें।
विषय संदेश दर पार हो गई TOPICS_MESSAGE_RATE
_EXCEEDED
किसी विशेष विषय पर ग्राहकों को संदेशों की दर बहुत अधिक है। इस विषय के लिए भेजे गए संदेशों की संख्या कम करें, और तुरंत भेजने का पुनः प्रयास न करें।
कनेक्शन ड्रेनिंग CONNECTION_DRAINING संदेश संसाधित नहीं किया जा सका क्योंकि कनेक्शन ख़त्म हो रहा है. ऐसा इसलिए होता है, क्योंकि समय-समय पर, एफसीएम को लोड संतुलन करने के लिए कनेक्शन बंद करने की आवश्यकता होती है। किसी अन्य XMPP कनेक्शन पर संदेश पुनः प्रयास करें।
अमान्य एपीएन क्रेडेंशियल INVALID_APNS_CREDENTIAL आईओएस डिवाइस पर लक्षित संदेश नहीं भेजा जा सका क्योंकि आवश्यक एपीएन प्रमाणीकरण कुंजी अपलोड नहीं की गई थी या समाप्त हो गई थी। अपने विकास और उत्पादन प्रमाण-पत्रों की वैधता की जाँच करें।
प्रमाणीकरण विफल होना AUTHENTICATION_FAILED बाहरी पुश सेवाओं से प्रमाणित करने में विफल। जांचें कि क्या आप सही वेब पुश प्रमाणपत्र का उपयोग कर रहे हैं।

अपस्ट्रीम संदेश सिंटैक्स

अपस्ट्रीम संदेश वह संदेश है जो क्लाइंट ऐप ऐप सर्वर को भेजता है। वर्तमान में केवल XMPP ही अपस्ट्रीम मैसेजिंग का समर्थन करता है। क्लाइंट ऐप्स से संदेश भेजने के बारे में अधिक जानकारी के लिए अपने प्लेटफ़ॉर्म का दस्तावेज़ देखें।

अपस्ट्रीम एक्सएमपीपी संदेश की व्याख्या करना

निम्न तालिका क्लाइंट ऐप्स से अपस्ट्रीम संदेश अनुरोधों के जवाब में एफसीएम द्वारा उत्पन्न एक्सएमपीपी छंद में फ़ील्ड का वर्णन करती है।

तालिका 5 अपस्ट्रीम एक्सएमपीपी संदेश।

पैरामीटर प्रयोग विवरण
from आवश्यक, स्ट्रिंग

यह पैरामीटर निर्दिष्ट करता है कि संदेश किसने भेजा है।

मान क्लाइंट ऐप का पंजीकरण टोकन है।

category आवश्यक, स्ट्रिंग यह पैरामीटर संदेश भेजने वाले क्लाइंट ऐप के एप्लिकेशन पैकेज का नाम निर्दिष्ट करता है।
message_id आवश्यक, स्ट्रिंग यह पैरामीटर संदेश की विशिष्ट आईडी निर्दिष्ट करता है।
data वैकल्पिक, स्ट्रिंग यह पैरामीटर संदेश के पेलोड के कुंजी-मूल्य जोड़े को निर्दिष्ट करता है।

एक ACK संदेश भेजा जा रहा है

निम्न तालिका ACK प्रतिक्रिया का वर्णन करती है जिसे ऐप सर्वर द्वारा प्राप्त अपस्ट्रीम संदेश के जवाब में ऐप सर्वर एफसीएम को भेजने की उम्मीद करता है।

तालिका 6 अपस्ट्रीम एक्सएमपीपी संदेश प्रतिक्रिया।

पैरामीटर प्रयोग विवरण
to आवश्यक, स्ट्रिंग

यह पैरामीटर प्रतिक्रिया संदेश के प्राप्तकर्ता को निर्दिष्ट करता है।

मान उस क्लाइंट ऐप का पंजीकरण टोकन होना चाहिए जिसने अपस्ट्रीम संदेश भेजा था।

message_id आवश्यक, स्ट्रिंग यह पैरामीटर निर्दिष्ट करता है कि प्रतिक्रिया किस संदेश के लिए है। मान संबंधित अपस्ट्रीम संदेश से message_id मान होना चाहिए।
message_type आवश्यक, स्ट्रिंग यह पैरामीटर ऐप सर्वर से सीसीएस के लिए एक ack संदेश निर्दिष्ट करता है। अपस्ट्रीम संदेशों के लिए, इसे हमेशा ack पर सेट किया जाना चाहिए।

एफसीएम सर्वर संदेश (एक्सएमपीपी)

यह FCM से ऐप सर्वर पर भेजा गया एक संदेश है। यहां प्राथमिक प्रकार के संदेश दिए गए हैं जो एफसीएम ऐप सर्वर को भेजता है:

  • नियंत्रण: ये सीसीएस-जनरेटेड संदेश संकेत देते हैं कि ऐप सर्वर से कार्रवाई की आवश्यकता है।

निम्न तालिका सीसीएस द्वारा ऐप सर्वर को भेजे जाने वाले संदेशों में शामिल फ़ील्ड का वर्णन करती है।

तालिका 7 एफसीएम नियंत्रण संदेश (एक्सएमपीपी)।

पैरामीटर प्रयोग विवरण
सामान्य क्षेत्र
message_type आवश्यक, स्ट्रिंग

यह पैरामीटर संदेश का प्रकार निर्दिष्ट करता है: नियंत्रण।

जब इसे control पर सेट किया जाता है, तो संदेश में नियंत्रण संदेश के प्रकार को इंगित करने के लिए control_type शामिल होता है।

control_type वैकल्पिक, स्ट्रिंग

यह पैरामीटर एफसीएम से भेजे गए नियंत्रण संदेश के प्रकार को निर्दिष्ट करता है।

वर्तमान में, केवल CONNECTION_DRAINING समर्थित है। लोड संतुलन करने के लिए कनेक्शन बंद करने से पहले एफसीएम यह नियंत्रण संदेश भेजता है। जैसे ही कनेक्शन खत्म हो जाता है, कनेक्शन पर कोई और संदेश भेजने की अनुमति नहीं होती है, लेकिन पाइपलाइन में मौजूदा संदेश संसाधित होते रहते हैं।