Firebase क्लाउड से मैसेज वाला एचटीटीपी प्रोटोकॉल

यह दस्तावेज़ उस एचटीटीपी सिंटैक्स का रेफ़रंस देता है जिसका इस्तेमाल Firebase क्लाउड से मैसेज के ज़रिए, आपके ऐप्लिकेशन सर्वर से क्लाइंट ऐप्लिकेशन पर मैसेज भेजने के लिए किया जाता है.

लेगसी एचटीटीपी प्रोटोकॉल का इस्तेमाल करने पर, आपके ऐप्लिकेशन सर्वर को सभी एचटीटीपी अनुरोधों को इस एंडपॉइंट पर भेजना होगा:

https://fcm.googleapis.com/fcm/send

उपलब्ध पैरामीटर और विकल्प, इन बड़ी कैटगरी में आते हैं:

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

इस सेक्शन में, डाउनस्ट्रीम मैसेज भेजने और 'Firebase क्लाउड से मैसेज' से एचटीटीपी रिस्पॉन्स को समझने के लिए सिंटैक्स दिया जाता है.

डाउनस्ट्रीम एचटीटीपी मैसेज (JSON)

यहां दी गई टेबल में, एचटीटीपी JSON मैसेज के टारगेट, विकल्प, और पेलोड की सूची दी गई है.

टेबल 1. डाउनस्ट्रीम एचटीटीपी मैसेज (JSON) के लिए टारगेट, विकल्प, और पेलोड.

पैरामीटर इस्तेमाल का तरीका ब्यौरा
टारगेट
to ज़रूरी नहीं, स्ट्रिंग

इस पैरामीटर से, मैसेज पाने वाले की जानकारी मिलती है.

यह वैल्यू किसी डिवाइस का रजिस्ट्रेशन टोकन, डिवाइस ग्रुप की सूचना कुंजी या कोई एक विषय (/topics/ प्रीफ़िक्स के साथ) हो सकती है. एक से ज़्यादा विषयों को भेजने के लिए, condition पैरामीटर का इस्तेमाल करें.

registration_ids
ज़रूरी नहीं, स्ट्रिंग का अरे

यह पैरामीटर मल्टीकास्ट मैसेज पाने वाले की जानकारी देता है. यह मैसेज एक से ज़्यादा रजिस्ट्रेशन टोकन को भेजा जाता है.

वैल्यू, रजिस्ट्रेशन टोकन की एक कैटगरी होनी चाहिए, जिस पर मल्टीकास्ट मैसेज भेजना है. कलेक्शन में कम से कम 1 और ज़्यादा से ज़्यादा 1,000 रजिस्ट्रेशन टोकन होने चाहिए. किसी एक डिवाइस पर मैसेज भेजने के लिए, to पैरामीटर का इस्तेमाल करें.

मल्टीकास्ट मैसेज की अनुमति सिर्फ़ एचटीटीपी JSON फ़ॉर्मैट का इस्तेमाल करने पर है.

condition ज़रूरी नहीं, स्ट्रिंग

यह पैरामीटर शर्तों का एक लॉजिकल एक्सप्रेशन तय करता है, जो मैसेज टारगेट तय करता है.

इस्तेमाल की जा सकने वाली शर्त: विषय, "विषयों में 'आपका विषय' के फ़ॉर्मैट में होना चाहिए. यह वैल्यू, केस-इनसेंसिटिव होती है.

इस्तेमाल किए जा सकने वाले ऑपरेटर: &&, ||. हर विषय के मैसेज के लिए ज़्यादा से ज़्यादा दो ऑपरेटर इस्तेमाल किए जा सकते हैं.

notification_key
अब काम नहीं करता
ज़रूरी नहीं, स्ट्रिंग

यह पैरामीटर अब काम नहीं करता. इसके बजाय, यह तय करने के लिए कि ईमेल पाने वाले लोगों की संख्या कितनी है, to का इस्तेमाल करें. एक से ज़्यादा डिवाइसों पर मैसेज भेजने के तरीके के बारे में ज़्यादा जानने के लिए, अपने प्लैटफ़ॉर्म से जुड़े दस्तावेज़ देखें.

विकल्प
collapse_key ज़रूरी नहीं, स्ट्रिंग

यह पैरामीटर मैसेज के एक ग्रुप (जैसे, collapse_key: "Updates Available" के साथ) की पहचान करता है जिसे छोटा किया जा सकता है. ऐसा इसलिए, ताकि डिलीवरी फिर से शुरू करने पर, सिर्फ़ आखिरी मैसेज भेजा जाए. इसका मकसद डिवाइस के वापस ऑनलाइन होने या चालू होने पर, एक ही तरह के कई मैसेज भेजने से बचना है.

ध्यान दें, इस बात की कोई गारंटी नहीं होती कि मैसेज किस क्रम में भेजे जाएंगे.

ध्यान दें: किसी भी समय ज़्यादा से ज़्यादा चार अलग-अलग छोटा करने वाली कुंजियों की अनुमति है. इसका मतलब है कि FCM हर क्लाइंट ऐप्लिकेशन के लिए एक साथ चार अलग-अलग मैसेज सेव कर सकता है. अगर यह संख्या इससे ज़्यादा हो जाती है, तो इस बात की कोई गारंटी नहीं है कि FCM पर मौजूद कौनसी 'छोटा करने की कुंजियां' रखी जाएंगी.

priority ज़रूरी नहीं, स्ट्रिंग

मैसेज की प्राथमिकता सेट करता है. मान्य वैल्यू "सामान्य" और "ज़्यादा" हैं. Apple प्लैटफ़ॉर्म पर, ये एपीएन प्राथमिकताएं 5 और 10 के मुताबिक होती हैं.

डिफ़ॉल्ट रूप से, सूचना वाले मैसेज ज़्यादा प्राथमिकता पर भेजे जाते हैं और डेटा मैसेज, सामान्य प्राथमिकता पर भेजे जाते हैं. 'सामान्य प्राथमिकता' क्लाइंट ऐप्लिकेशन की बैटरी के इस्तेमाल को ऑप्टिमाइज़ करती है. इसका इस्तेमाल तब तक किया जाना चाहिए, जब तक तुरंत डिलीवरी की ज़रूरत न हो. सामान्य प्राथमिकता वाले मैसेज के लिए, ऐप्लिकेशन को तय समय पर देरी से मैसेज मिल सकता है.

जब ज़्यादा प्राथमिकता वाला कोई मैसेज भेजा जाता है, तो उसे तुरंत भेज दिया जाता है. साथ ही, ऐप्लिकेशन एक सूचना दिखा सकता है.

content_available ज़रूरी नहीं, बूलियन

Apple प्लैटफ़ॉर्म पर, एपीएन पेलोड में content-available को दिखाने के लिए इस फ़ील्ड का इस्तेमाल करें. जब कोई सूचना या मैसेज भेजा जाता है और इसे true पर सेट किया जाता है, तो इनऐक्टिव क्लाइंट ऐप्लिकेशन चालू हो जाता है. साथ ही, मैसेज को एपीएन के ज़रिए साइलेंट नोटिफ़िकेशन के तौर पर भेजा जाता है, न कि FCM के ज़रिए. ध्यान दें कि एपीएन में साइलेंट मोड पर सेट की गई सूचनाओं के डिलीवर होने की गारंटी नहीं है. ये कई बातों पर निर्भर करते हैं, जैसे कि उपयोगकर्ता ने कम पावर वाला मोड चालू किया है, ऐप्लिकेशन को ज़बरदस्ती बंद किया है वगैरह. Android पर, डेटा मैसेज की मदद से ऐप्लिकेशन डिफ़ॉल्ट रूप से चालू हो जाता है. फ़िलहाल, Chrome पर यह सुविधा उपलब्ध नहीं है.

mutable_content ज़रूरी नहीं, JSON बूलियन

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

time_to_live ज़रूरी नहीं, नंबर

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

restricted_package_
name
(सिर्फ़ Android वर्शन पर)
ज़रूरी नहीं, स्ट्रिंग यह पैरामीटर उस ऐप्लिकेशन का पैकेज नाम बताता है जिसमें मैसेज पाने के लिए, रजिस्ट्रेशन टोकन का मेल खाना ज़रूरी है.
dry_run ज़रूरी नहीं, बूलियन

इस पैरामीटर को true पर सेट करने से, डेवलपर को अनुरोध भेजे बिना ही किसी अनुरोध की जांच करने की सुविधा मिलती है.

डिफ़ॉल्ट वैल्यूfalse है

पेलोड
data ज़रूरी नहीं, ऑब्जेक्ट

यह पैरामीटर, मैसेज के पेलोड के कस्टम की-वैल्यू पेयर को तय करता है.

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

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

Android पर, इससे स्ट्रिंग वैल्यू 3x1 के साथ score नाम का एक अतिरिक्त इंटेंट मिलेगा.

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

स्ट्रिंग टाइप में वैल्यू जोड़ने का सुझाव दिया जाता है. आपको ऑब्जेक्ट या दूसरे बिना स्ट्रिंग वाले डेटा टाइप (जैसे कि पूर्णांक या बूलियन) की वैल्यू को स्ट्रिंग में बदलना होगा.

notification ज़रूरी नहीं, ऑब्जेक्ट यह पैरामीटर, सूचना पेलोड के पहले से तय और उपयोगकर्ता को दिखने वाले की-वैल्यू पेयर की जानकारी देता है. ज़्यादा जानकारी के लिए, सूचना पेलोड से जुड़ी सहायता देखें. सूचना वाले मैसेज और डेटा मैसेज के विकल्पों के बारे में ज़्यादा जानने के लिए, मैसेज के टाइप देखें. अगर सूचना पेलोड दिया गया है या Apple डिवाइस पर मैसेज के लिए content_available का विकल्प true पर सेट है, तो मैसेज एपीएन से भेजा जाता है. ऐसा न होने पर, यह FCM के ज़रिए भेजा जाता है.

नोटिफ़िकेशन पेलोड सहायता

इन टेबल में, iOS और Android के लिए सूचना देने वाले मैसेज बनाने के लिए उपलब्ध, पहले से तय की गई कुंजियों की सूची दी गई है.

टेबल 2a. iOS — सूचना मैसेज के लिए कुंजियां

पैरामीटर इस्तेमाल का तरीका ब्यौरा
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 के मुताबिक.

ज़्यादा जानकारी के लिए, पेलोड कुंजी का रेफ़रंस और रिमोट पर मिलने वाली सूचनाओं के कॉन्टेंट को स्थानीय भाषा में उपलब्ध कराना देखें.

टेबल 2b. Android — सूचना मैसेज के लिए कुंजियां

पैरामीटर इस्तेमाल का तरीका ब्यौरा
title ज़रूरी नहीं, स्ट्रिंग

सूचना का टाइटल.

body ज़रूरी नहीं, स्ट्रिंग

सूचना का मुख्य टेक्स्ट.

android_channel_id ज़रूरी नहीं, स्ट्रिंग

सूचना का चैनल आईडी (Android O में नया).

इस चैनल आईडी की कोई भी सूचना मिलने से पहले, ऐप्लिकेशन को इस चैनल आईडी के साथ एक चैनल बनाना होगा.

अगर आप अनुरोध में यह चैनल आईडी नहीं भेजते हैं या दिया गया चैनल आईडी, ऐप्लिकेशन ने अब तक नहीं बनाया है, तो FCM, ऐप्लिकेशन मेनिफ़ेस्ट में बताए गए चैनल आईडी का इस्तेमाल करता है.

icon ज़रूरी नहीं, स्ट्रिंग

सूचना का आइकॉन.

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

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 में फ़ॉर्मैट की खास बातों की जगह पर, वैरिएबल स्ट्रिंग की वैल्यू का इस्तेमाल किया जाना चाहिए. इससे, टाइटल के टेक्स्ट को उपयोगकर्ता की मौजूदा स्थानीय भाषा के हिसाब से स्थानीय भाषा के अनुसार बनाया जा सकता है.

ज़्यादा जानकारी के लिए, फ़ॉर्मैटिंग और स्टाइल देखें.

टेबल 2c. वेब (JavaScript) — सूचना वाले मैसेज के लिए कुंजियां

पैरामीटर इस्तेमाल का तरीका ब्यौरा
title ज़रूरी नहीं, स्ट्रिंग

सूचना का टाइटल.

body ज़रूरी नहीं, स्ट्रिंग

सूचना का मुख्य टेक्स्ट.

icon ज़रूरी नहीं, स्ट्रिंग

सूचना के आइकॉन के लिए इस्तेमाल किया जाने वाला यूआरएल.

click_action ज़रूरी नहीं, स्ट्रिंग

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

सभी यूआरएल वैल्यू के लिए, एचटीटीपीएस ज़रूरी है.

डाउनस्ट्रीम एचटीटीपी मैसेज (सामान्य टेक्स्ट)

नीचे दी गई टेबल में सामान्य टेक्स्ट डाउनस्ट्रीम एचटीटीपी मैसेज में टारगेट, विकल्पों, और पेलोड के लिए सिंटैक्स की सूची दी गई है.

टेबल 3. डाउनस्ट्रीम में सादा टेक्स्ट वाले एचटीटीपी मैसेज के टारगेट, विकल्प, और पेलोड.

पैरामीटर इस्तेमाल का तरीका ब्यौरा
टारगेट
registration_id ज़रूरी है, स्ट्रिंग

यह पैरामीटर, मैसेज पाने वाले क्लाइंट ऐप्लिकेशन (रजिस्ट्रेशन टोकन) के बारे में बताता है.

मल्टीकास्ट मैसेज सेवा (एक से ज़्यादा रजिस्ट्रेशन टोकन पर भेजने की सुविधा) सिर्फ़ एचटीटीपी JSON फ़ॉर्मैट का इस्तेमाल कर सकती है.

विकल्प
collapse_key ज़रूरी नहीं, स्ट्रिंग ज़्यादा जानकारी के लिए, पहली टेबल देखें.
time_to_live ज़रूरी नहीं, नंबर ज़्यादा जानकारी के लिए, पहली टेबल देखें.
restricted_package_name ज़रूरी नहीं, स्ट्रिंग ज़्यादा जानकारी के लिए, पहली टेबल देखें.
dry_run ज़रूरी नहीं, बूलियन ज़्यादा जानकारी के लिए, पहली टेबल देखें.
पेलोड
data.<key> ज़रूरी नहीं, स्ट्रिंग

यह पैरामीटर, मैसेज के पेलोड के की-वैल्यू पेयर को तय करता है. कुंजी-वैल्यू पैरामीटर की संख्या की कोई सीमा नहीं है, लेकिन मैसेज का साइज़ 4096 बाइट तक हो सकता है.

उदाहरण के लिए, Android में "data.score"."3x1" से 3x1 स्ट्रिंग वैल्यू के साथ, score नाम का एक अतिरिक्त इंटेंट मिलेगा.

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

डाउनस्ट्रीम मैसेज के जवाब को समझना

FCM से भेजे गए मैसेज के जवाब को समझने के लिए, ऐप्लिकेशन सर्वर को मैसेज का जवाब देने वाले हेडर और मुख्य हिस्से, दोनों का आकलन करना चाहिए. नीचे दी गई टेबल में, संभावित जवाबों की जानकारी दी गई है.

टेबल 4. डाउनस्ट्रीम एचटीटीपी मैसेज का रिस्पॉन्स हेडर.

जवाब ब्यौरा
200 मैसेज प्रोसेस हो गया. जवाब के मुख्य हिस्से में मैसेज की स्थिति के बारे में ज़्यादा जानकारी शामिल होगी. हालांकि, इसका फ़ॉर्मैट इस बात पर निर्भर करेगा कि अनुरोध JSON या सादा टेक्स्ट था. ज़्यादा जानकारी के लिए, टेबल 5 देखें.
400 यह सुविधा सिर्फ़ JSON अनुरोधों पर लागू होती है. इससे पता चलता है कि अनुरोध को JSON के तौर पर पार्स नहीं किया जा सका या उसमें अमान्य फ़ील्ड शामिल थे (उदाहरण के लिए, ऐसी स्ट्रिंग पास करना जहां नंबर की उम्मीद थी). जवाब में, गड़बड़ी की सटीक वजह के बारे में बताया गया है. साथ ही, फिर से कोशिश करने से पहले, समस्या को ठीक किया जाना चाहिए.
401 भेजने वाले के खाते की पुष्टि करते समय कोई गड़बड़ी हुई.
5xx 500-599 की रेंज (जैसे कि 500 या 503) की गड़बड़ियां बताती हैं कि अनुरोध को प्रोसेस करते समय, FCM बैकएंड में कोई अंदरूनी गड़बड़ी हुई. यह भी हो सकता है कि सर्वर कुछ समय के लिए उपलब्ध नहीं है, जैसे कि टाइम आउट होने की वजह से. जवाब में शामिल किसी Retry-After हेडर के हिसाब से, भेजने वाले को बाद में कोशिश करनी होगी. ऐप्लिकेशन सर्वर को एक्सपोनेन्शियल बैक-ऑफ़ लागू करना होगा.

इस टेबल में, डाउनस्ट्रीम मैसेज के जवाब वाले मुख्य हिस्से (JSON) में फ़ील्ड की सूची दी गई है.

टेबल 5. डाउनस्ट्रीम एचटीटीपी मैसेज के जवाब का मुख्य हिस्सा (JSON).

पैरामीटर इस्तेमाल का तरीका ब्यौरा
multicast_id ज़रूरी है, नंबर मल्टीकास्ट मैसेज की पहचान करने वाला यूनीक आईडी (नंबर).
success ज़रूरी है, नंबर बिना किसी गड़बड़ी के प्रोसेस किए गए मैसेज की संख्या.
failure ज़रूरी है, नंबर प्रोसेस नहीं किए जा सके मैसेज की संख्या.
results ज़रूरी है, ऑब्जेक्ट का कलेक्शन प्रोसेस किए गए मैसेज की स्थिति दिखाने वाले ऑब्जेक्ट का कलेक्शन. ऑब्जेक्ट को उसी क्रम में लिस्ट किया जाता है जैसा अनुरोध किया गया था. इसका मतलब है कि अनुरोध में मौजूद हर रजिस्ट्रेशन आईडी के लिए, रिस्पॉन्स में इसका नतीजा उसी इंडेक्स में दिया गया है.
  • message_id: पूरी तरह प्रोसेस हो चुके हर मैसेज के लिए एक यूनीक आईडी तय करने वाली स्ट्रिंग.
  • error: पाने वाले के लिए मैसेज को प्रोसेस करते समय हुई गड़बड़ी के बारे में बताने वाली स्ट्रिंग. संभावित वैल्यू टेबल 9 में देखी जा सकती हैं.

टेबल 6. विषय के मैसेज के एचटीटीपी रिस्पॉन्स का मुख्य हिस्सा (JSON).

पैरामीटर इस्तेमाल का तरीका ब्यौरा
message_id ज़रूरी नहीं, नंबर विषय का मैसेज आईडी, जब FCM को अनुरोध मिल जाएगा और वह सदस्यता वाले सभी डिवाइसों पर डिलीवर करने की कोशिश करेगा.
error ज़रूरी नहीं, स्ट्रिंग मैसेज को प्रोसेस करते समय कोई गड़बड़ी हुई. संभावित वैल्यू टेबल 9 में देखी जा सकती हैं.

टेबल 7. डाउनस्ट्रीम एचटीटीपी मैसेज के जवाब का मुख्य हिस्सा (सादा टेक्स्ट) के लिए सक्सेस रिस्पॉन्स.

पैरामीटर इस्तेमाल का तरीका ब्यौरा
id ज़रूरी है, स्ट्रिंग यह पैरामीटर, FCM के प्रोसेस किए गए यूनीक मैसेज आईडी की जानकारी देता है.
registration_id ज़रूरी नहीं, स्ट्रिंग यह पैरामीटर उस क्लाइंट ऐप्लिकेशन के रजिस्ट्रेशन टोकन के बारे में बताता है जिस पर मैसेज प्रोसेस करके भेजा गया था.

टेबल 8. डाउनस्ट्रीम एचटीटीपी मैसेज के जवाब के मुख्य हिस्से के लिए गड़बड़ी का जवाब (सामान्य टेक्स्ट).

पैरामीटर इस्तेमाल का तरीका ब्यौरा
Error ज़रूरी है, स्ट्रिंग यह पैरामीटर, मैसेज पाने वाले के लिए मैसेज प्रोसेस करते समय गड़बड़ी वाली वैल्यू के बारे में बताता है. ज़्यादा जानकारी के लिए, टेबल 9 देखें.

डाउनस्ट्रीम मैसेज में गड़बड़ी के रिस्पॉन्स कोड

यहां दी गई टेबल में, डाउनस्ट्रीम मैसेज के लिए गड़बड़ी के रिस्पॉन्स कोड दिए गए हैं.

टेबल 9. डाउनस्ट्रीम मैसेज में गड़बड़ी के रिस्पॉन्स कोड.

गड़बड़ी एचटीटीपी कोड सुझाई गई कार्रवाई
रजिस्ट्रेशन टोकन मौजूद नहीं है 200 + गड़बड़ी:रजिस्ट्रेशन नहीं है देखें कि अनुरोध में रजिस्ट्रेशन टोकन शामिल है या नहीं (सामान्य टेक्स्ट मैसेज के registration_id में या JSON के to या registration_ids फ़ील्ड में).
अमान्य रजिस्ट्रेशन टोकन 200 + गड़बड़ी:अमान्य रजिस्ट्रेशन सर्वर पर भेजे जाने वाले रजिस्ट्रेशन टोकन का फ़ॉर्मैट जांचें. पक्का करें कि यह Firebase नोटिफ़िकेशन के साथ रजिस्टर करने से क्लाइंट ऐप्लिकेशन को मिलने वाले रजिस्ट्रेशन टोकन से मेल खाता हो. न तो काट-छांट करें और न ही अतिरिक्त वर्णों को जोड़ें.
डिवाइस का रजिस्ट्रेशन रद्द किया गया है 200 + गड़बड़ी:रजिस्टर नहीं किया गया मौजूदा रजिस्ट्रेशन टोकन, कई स्थितियों में मान्य नहीं रह सकता. इनमें ये शामिल हैं:
  • अगर क्लाइंट ऐप्लिकेशन, FCM के साथ रजिस्ट्रेशन रद्द करता है.
  • अगर क्लाइंट ऐप्लिकेशन का रजिस्ट्रेशन अपने-आप रद्द हो जाता है, तो उपयोगकर्ता के ऐप्लिकेशन को अनइंस्टॉल करने पर ऐसा हो सकता है. उदाहरण के लिए, iOS पर, अगर एपीएन फ़ीडबैक सेवा ने एपीएन टोकन को अमान्य के तौर पर रिपोर्ट किया हो.
  • अगर रजिस्ट्रेशन टोकन की समयसीमा खत्म हो जाती है. उदाहरण के लिए, Google, रजिस्ट्रेशन टोकन को रीफ़्रेश करने का फ़ैसला ले सकता है या iOS डिवाइसों के लिए एपीएन टोकन की समयसीमा खत्म हो गई है.
  • अगर क्लाइंट ऐप्लिकेशन को अपडेट किया गया है, लेकिन नया वर्शन मैसेज पाने के लिए कॉन्फ़िगर नहीं किया गया है.
इन सभी मामलों में, इस रजिस्ट्रेशन टोकन को ऐप्लिकेशन सर्वर से हटाएं और मैसेज भेजने के लिए इसका इस्तेमाल करना बंद करें.
अमान्य पैकेज नाम 200 + गड़बड़ी:अमान्यपैकेज नाम पक्का करें कि मैसेज, रजिस्ट्रेशन टोकन के लिए भेजा गया हो. इसका पैकेज का नाम, अनुरोध में दी गई वैल्यू से मेल खाता हो.
प्रमाणीकरण गड़बड़ी 401 मैसेज भेजने के लिए इस्तेमाल किए जाने वाले व्यक्ति के खाते की पुष्टि नहीं की जा सकी. इसकी ये वजहें हो सकती हैं:
  • एचटीटीपी अनुरोध में, अनुमति वाला हेडर मौजूद नहीं है या उसका सिंटैक्स अमान्य है.
  • वह Firebase प्रोजेक्ट गलत है जिससे यह सर्वर कुंजी जुड़ी है.
  • सिर्फ़ लेगसी सर्वर कुंजियां—अनुरोध ऐसे सर्वर से किया गया है जिसे सर्वर कुंजी के आईपी में अनुमति नहीं दी गई है.
पक्का करें कि पुष्टि वाले हेडर में जो टोकन भेजा जा रहा है वह आपके प्रोजेक्ट से जुड़ी सही सर्वर कुंजी है या नहीं. ज़्यादा जानकारी के लिए, सर्वर कुंजी की वैधता की जांच करना देखें. अगर लेगसी सर्वर कुंजी का इस्तेमाल किया जा रहा है, तो हमारा सुझाव है कि आप ऐसी नई कुंजी पर अपग्रेड करें जिस पर आईपी से जुड़ी कोई पाबंदी न हो. लेगसी सर्वर कुंजियां माइग्रेट करना देखें.
भेजने वाले का नाम मेल नहीं खा रहा है 200 + गड़बड़ी:MismatchSenderId रजिस्ट्रेशन टोकन, ईमेल भेजने वालों के खास ग्रुप से जुड़ा होता है. जब कोई क्लाइंट ऐप्लिकेशन FCM के लिए रजिस्टर होता है, तब उसे यह बताना होगा कि ईमेल भेजने वाले किन लोगों को मैसेज भेजने की अनुमति है. क्लाइंट ऐप्लिकेशन पर मैसेज भेजते समय, आपको इनमें से किसी एक आईडी का इस्तेमाल करना चाहिए. अगर किसी दूसरे ईमेल भेजने वाले पर स्विच किया जाता है, तो मौजूदा रजिस्ट्रेशन टोकन काम नहीं करेंगे.
अमान्य JSON 400 जांच लें कि JSON मैसेज सही तरीके से फ़ॉर्मैट किया गया है और उसमें मान्य फ़ील्ड हैं (उदाहरण के लिए, यह पक्का करना कि सही डेटा टाइप पास किया गया है).
अमान्य पैरामीटर 400 + गड़बड़ी:अमान्य पैरामीटर देखें कि दिए गए पैरामीटर का नाम और टाइप सही है या नहीं.
मैसेज बहुत बड़ा है 200 + गड़बड़ी:MessageTooBig जांचें कि किसी मैसेज में शामिल पेलोड डेटा का कुल साइज़, FCM की सीमा से ज़्यादा न हो. यह सीमा, ज़्यादातर मैसेज के लिए 4096 बाइट या विषयों के मैसेज के मामले में 2048 बाइट है. इसमें 'की' और वैल्यू दोनों शामिल होते हैं.
अमान्य डेटा कुंजी 200 + गड़बड़ी:
अमान्यDataKey
यह जांच लें कि पेलोड डेटा में कोई ऐसी कुंजी (जैसे कि from या gcm या google से शुरू की गई कोई भी वैल्यू) न हो जिसे FCM में इस्तेमाल किया जा रहा हो. ध्यान दें कि कुछ शब्द (जैसे कि collapse_key) का भी इस्तेमाल FCM में किया जाता है, लेकिन पेलोड में उनका इस्तेमाल किया जा सकता है. ऐसे में, पेलोड वैल्यू को FCM वैल्यू से बदल दिया जाएगा.
अमान्य समय लाइव करने का 200 + गड़बड़ी:अमान्य जांचें कि time_to_live में इस्तेमाल किया गया मान, 0 से 2,419,200 (4 हफ़्ते) के बीच सेकंड में अवधि को दिखाने वाला पूर्णांक है.
टाइम आउट की संख्या 5xx या 200 + गड़बड़ी:उपलब्ध नहीं है

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

  • अगर Retry-After हेडर को FCM कनेक्शन सर्वर के रिस्पॉन्स में शामिल किया गया है, तो उस पर ध्यान दें.
  • अपने फिर से कोशिश करने के तरीके में एक्सपोनेन्शियल बैक-ऑफ़ लागू करें. उदाहरण के लिए, अगर आपने पहली बार कोशिश करने से पहले एक सेकंड इंतज़ार किया है, तो अगले वाले से कम से कम दो सेकंड पहले चार सेकंड इंतज़ार करें. इसके बाद, ऐसे ही चार सेकंड इंतज़ार करें. अगर आपको एक से ज़्यादा मैसेज भेजने हैं, तो हर मैसेज के लिए अलग-अलग अतिरिक्त रकम भेजकर अलग-अलग देरी करें. इससे एक ही समय पर सभी मैसेज के लिए नया अनुरोध भेजने से बचा जा सकता है.

जिन ईमेल के ज़रिए समस्याएं होती हैं उन्हें ब्लैकलिस्ट किए जाने का खतरा होता है.

आंतरिक सर्वर गड़बड़ी 500 या 200 + गड़बड़ी:InternalServerError अनुरोध को प्रोसेस करते समय सर्वर में कोई गड़बड़ी हुई. "समय खत्म" (ऊपर दी गई पंक्ति देखें) में बताई गई ज़रूरी शर्तों का पालन करके, फिर से वही अनुरोध करें. अगर गड़बड़ी बनी रहती है, तो कृपया Firebase सहायता टीम से संपर्क करें.
डिवाइस के मैसेज की दर पार हो गई 200 + गड़बड़ी:
DeviceMessageRate
सीमा खत्म हो गई है

किसी खास डिवाइस पर भेजे जाने वाले मैसेज की दर बहुत ज़्यादा है. अगर Apple का कोई ऐप्लिकेशन एपीएन की तय सीमा से ज़्यादा दर पर मैसेज भेजता है, तो उसे गड़बड़ी का यह मैसेज मिल सकता है

इस डिवाइस पर भेजे गए मैसेज की संख्या कम करें और फिर से भेजने के लिए एक्सपोनेन्शियल बैकऑफ़ का इस्तेमाल करें.

विषयों की मैसेज दर पार हो गई 200 + गड़बड़ी:
TopicsMessageRate
तय सीमा से ज़्यादा
किसी खास विषय के सदस्यों को भेजे जाने वाले मैसेज की दर बहुत ज़्यादा है. इस विषय के लिए भेजे गए मैसेज की संख्या कम करें और फिर से भेजने के लिए एक्सपोनेन्शियल बैकऑफ़ का इस्तेमाल करें.
एपीएन क्रेडेंशियल अमान्य हैं 200 + गड़बड़ी:
अमान्यApnsAdWords
Apple डिवाइस को टारगेट करने वाला मैसेज नहीं भेजा जा सका, क्योंकि ज़रूरी एपीएन पुष्टि करने वाली कुंजी अपलोड नहीं की गई या उसकी समयसीमा खत्म हो गई है. अपने डेवलपमेंट और प्रोडक्शन क्रेडेंशियल की वैधता की जांच करें.

डिवाइस ग्रुप मैनेजमेंट

डिवाइस ग्रुप बनाने के साथ-साथ सदस्यों को जोड़ने और हटाने की कुंजियां, नीचे दी गई टेबल में दी गई हैं. ज़्यादा जानकारी के लिए, अपने प्लैटफ़ॉर्म के लिए गाइड, iOS+ या Android देखें.

टेबल 10. डिवाइस ग्रुप मैनेज करने की कुंजियां.

पैरामीटर इस्तेमाल का तरीका ब्यौरा
operation ज़रूरी है, स्ट्रिंग चलाई जाने वाली कार्रवाई.मान्य वैल्यू create, add, और remove हैं.
notification_key_name ज़रूरी है, स्ट्रिंग डिवाइस ग्रुप बनाने या उसमें बदलाव करने के लिए, उपयोगकर्ता की ओर से तय किया गया नाम.
notification_key ज़रूरी है (create कार्रवाई को छोड़कर, स्ट्रिंग डिवाइस ग्रुप का यूनीक आइडेंटिफ़ायर. यह वैल्यू वापस, create कार्रवाई करने पर मिलती है. साथ ही, यह डिवाइस ग्रुप पर की जाने वाली सभी कार्रवाइयों के लिए ज़रूरी है.
registration_ids ज़रूरी है, स्ट्रिंग का कलेक्शन जोड़ने या हटाने के लिए, डिवाइस के टोकन. अगर किसी डिवाइस ग्रुप से सभी मौजूदा रजिस्ट्रेशन टोकन हटाए जाते हैं, तो FCM, डिवाइस ग्रुप को मिटा देता है.