FCM से जुड़ी गड़बड़ी के कोड

HTTP v1 API के लिए REST गड़बड़ी कोड

एचटीटीपी v1 एपीआई के लिए, एचटीटीपी गड़बड़ी वाले जवाबों में गड़बड़ी का कोड, गड़बड़ी का मैसेज, और गड़बड़ी की स्थिति शामिल होती है. इनमें details ऐरे भी शामिल हो सकता है. इसमें गड़बड़ी के बारे में ज़्यादा जानकारी होती है.

गड़बड़ी के जवाब के दो सैंपल यहां दिए गए हैं:

पहला उदाहरण: एचटीटीपी v1 एपीआई के अनुरोध से मिला गड़बड़ी वाला जवाब. इसमें डेटा मैसेज में अमान्य वैल्यू मौजूद है

{
  "error": {
    "code": 400,
    "message": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "message.data[0].value",
            "description": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12"
          }
        ]
      }
    ]
  }
}

दूसरा उदाहरण: अमान्य रजिस्ट्रेशन टोकन के साथ एचटीटीपी v1 एपीआई अनुरोध से मिला गड़बड़ी वाला जवाब

{
  "error": {
    "code": 400,
    "message": "The registration token is not a valid FCM registration token",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
        "errorCode": "INVALID_ARGUMENT"
      }
    ]
   }
}

ध्यान दें कि दोनों मैसेज का कोड और स्टेटस एक जैसा है. हालांकि, details array में अलग-अलग तरह की वैल्यू शामिल हैं. पहले उदाहरण में, टाइप type.googleapis.com/google.rpc.BadRequest से पता चलता है कि अनुरोध की वैल्यू में गड़बड़ी है. टाइप type.googleapis.com/google.firebase.fcm.v1.FcmError वाले दूसरे उदाहरण में, FCM से जुड़ी गड़बड़ी है. कई गड़बड़ियों के लिए, details ऐरे में वह जानकारी होती है जिसकी मदद से गड़बड़ियों को डीबग किया जा सकता है और उन्हें ठीक किया जा सकता है.

इस टेबल में, FCM v1 REST API के गड़बड़ी कोड और उनके ब्यौरे दिए गए हैं.

त्रुटि कोड समस्या का ब्यौरा और उसे हल करने का तरीका
UNSPECIFIED_ERROR इस गड़बड़ी के बारे में ज़्यादा जानकारी उपलब्ध नहीं है. कोई नहीं.
INVALID_ARGUMENT (एचटीटीपी गड़बड़ी कोड = 400) अनुरोध के पैरामीटर अमान्य थे. google.rpc.BadRequest टाइप का एक्सटेंशन दिखाया जाता है, ताकि यह पता चल सके कि कौनसे फ़ील्ड में अमान्य वैल्यू डाली गई है. इस समस्या की वजहें ये हो सकती हैं: अमान्य रजिस्ट्रेशन, अमान्य पैकेज का नाम, मैसेज बहुत बड़ा होना, अमान्य डेटा कुंजी, अमान्य टीटीएल या अन्य अमान्य पैरामीटर.
अमान्य रजिस्ट्रेशन: सर्वर को भेजे गए रजिस्ट्रेशन टोकन का फ़ॉर्मैट देखें. पक्का करें कि यह उस रजिस्ट्रेशन टोकन से मेल खाता हो जो क्लाइंट ऐप्लिकेशन को FCM के साथ रजिस्टर करने पर मिलता है. टोकन को छोटा न करें या उसमें अतिरिक्त वर्ण न जोड़ें.
पैकेज का नाम अमान्य है: पक्का करें कि मैसेज उस रजिस्ट्रेशन टोकन को भेजा गया हो जिसके पैकेज का नाम, अनुरोध में पास की गई वैल्यू से मेल खाता हो.
मैसेज का साइज़ बहुत बड़ा है: पक्का करें कि किसी मैसेज में शामिल पेलोड डेटा का कुल साइज़, FCM की सीमाओं से ज़्यादा न हो. ज़्यादातर मैसेज के लिए, यह 4096 बाइट होता है. हालांकि, विषयों से जुड़े मैसेज के लिए, यह 2048 बाइट होता है. इसमें कुंजियां और वैल्यू, दोनों शामिल होती हैं.
अमान्य डेटा कुंजी: पक्का करें कि पेलोड डेटा में ऐसी कोई कुंजी (जैसे, from, gcm या google से शुरू होने वाली कोई भी वैल्यू) शामिल न हो जिसका इस्तेमाल FCM अंदरूनी तौर पर करता है. ध्यान दें कि कुछ शब्दों (जैसे, collapse_key) का इस्तेमाल FCM भी करता है. हालांकि, इन्हें पेलोड में इस्तेमाल करने की अनुमति है. ऐसे में, पेलोड की वैल्यू को FCM की वैल्यू से बदल दिया जाएगा.
अमान्य टीटीएल: पक्का करें कि टीटीएल में इस्तेमाल की गई वैल्यू, 0 से 24,19,200 (चार हफ़्ते) के बीच की अवधि को दिखाने वाला पूर्णांक हो.
अमान्य पैरामीटर: जांच करें कि दिए गए पैरामीटर का नाम और टाइप सही हो.
UNREGISTERED (एचटीटीपी गड़बड़ी कोड = 404) ऐप्लिकेशन इंस्टेंस को FCM से अनरजिस्टर कर दिया गया है. आम तौर पर, इसका मतलब है कि इस्तेमाल किया गया टोकन अब मान्य नहीं है और एक नया टोकन इस्तेमाल किया जाना चाहिए. यह गड़बड़ी, रजिस्ट्रेशन टोकन मौजूद न होने या रजिस्टर न किए गए टोकन की वजह से हो सकती है.
पंजीकरण मौजूद नहीं है: अगर मैसेज का टारगेट token वैल्यू है, तो जांच करें कि अनुरोध में रजिस्ट्रेशन टोकन शामिल हो.
रजिस्टर नहीं किया गया: मौजूदा रजिस्ट्रेशन टोकन कई स्थितियों में अमान्य हो सकता है. जैसे:
- अगर क्लाइंट ऐप्लिकेशन, FCM से अनरजिस्टर हो जाता है.
- अगर क्लाइंट ऐप्लिकेशन अपने-आप अनरजिस्टर हो जाता है. ऐसा तब हो सकता है, जब उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल कर देता है. उदाहरण के लिए, iOS पर, अगर APNs Feedback Service ने APNs टोकन को अमान्य के तौर पर रिपोर्ट किया है.
- अगर रजिस्ट्रेशन टोकन की समयसीमा खत्म हो जाती है. उदाहरण के लिए, Google रजिस्ट्रेशन टोकन को रीफ़्रेश करने का फ़ैसला कर सकता है या iOS डिवाइसों के लिए APNs टोकन की समयसीमा खत्म हो गई है.
- अगर क्लाइंट ऐप्लिकेशन अपडेट हो गया है, लेकिन नए वर्शन को मैसेज पाने के लिए कॉन्फ़िगर नहीं किया गया है.
इन सभी मामलों में, ऐप्लिकेशन सर्वर से इस रजिस्ट्रेशन टोकन को हटा दें. साथ ही, इसका इस्तेमाल करके मैसेज भेजना बंद कर दें.
SENDER_ID_MISMATCH (एचटीटीपी गड़बड़ी कोड = 403) पुष्टि किया गया ईमेल पता, रजिस्ट्रेशन टोकन के ईमेल पते से अलग है. रजिस्ट्रेशन टोकन, ईमेल भेजने वालों के किसी ग्रुप से जुड़ा होता है. जब कोई क्लाइंट ऐप्लिकेशन, FCM के लिए रजिस्टर करता है, तो उसे यह बताना होगा कि किन खातों को मैसेज भेजने की अनुमति है. क्लाइंट ऐप्लिकेशन को मैसेज भेजते समय, आपको इनमें से किसी एक आईडी का इस्तेमाल करना चाहिए. किसी दूसरे आईडी पर स्विच करने पर, मौजूदा रजिस्ट्रेशन टोकन काम नहीं करेंगे.
QUOTA_EXCEEDED (एचटीटीपी गड़बड़ी कोड = 429) मैसेज टारगेट के लिए, मैसेज भेजने की सीमा पार हो गई है. google.rpc.QuotaFailure टाइप का एक्सटेंशन तब दिखता है, जब किसी कोटे की सीमा पार हो जाती है. यह गड़बड़ी, मैसेज भेजने की दर के कोटे, डिवाइस के लिए मैसेज भेजने की दर के कोटे या विषय के लिए मैसेज भेजने की दर के कोटे से ज़्यादा होने की वजह से हो सकती है.
मैसेज भेजने की दर तय सीमा से ज़्यादा है: मैसेज भेजने की दर बहुत ज़्यादा है. आपको मैसेज भेजने की दर कम करनी होगी. मैसेज अस्वीकार होने पर, उन्हें फिर से भेजने के लिए एक्स्पोनेंशियल बैकऑफ़ का इस्तेमाल करें. इसमें, शुरुआती देरी कम से कम एक मिनट होनी चाहिए.
डिवाइस पर मैसेज भेजने की दर बहुत ज़्यादा है: किसी डिवाइस पर मैसेज भेजने की दर बहुत ज़्यादा है. एक डिवाइस पर मैसेज भेजने की दर की सीमा देखें. इस डिवाइस पर भेजे जाने वाले मैसेज की संख्या कम करें. साथ ही, मैसेज भेजने की कोशिश फिर से करने के लिए, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें.
विषय के हिसाब से मैसेज भेजने की दर बहुत ज़्यादा है: किसी विषय के लिए, सदस्यों को मैसेज भेजने की दर बहुत ज़्यादा है. इस विषय के लिए भेजे जाने वाले मैसेज की संख्या कम करें. साथ ही, मैसेज भेजने की कोशिश फिर से करने के लिए, एक्स्पोनेंशियल बैकऑफ़ का इस्तेमाल करें. इसमें, कम से कम एक मिनट का शुरुआती समय होना चाहिए.
UNAVAILABLE (एचटीटीपी गड़बड़ी का कोड = 503) सर्वर पर बहुत ज़्यादा लोड है. सर्वर, अनुरोध को समय पर प्रोसेस नहीं कर सका. उसी अनुरोध को फिर से भेजें. हालांकि, आपको ये काम करने होंगे:
- अगर FCM कनेक्शन सर्वर से मिले रिस्पॉन्स में Retry-After हेडर शामिल है, तो उसका पालन करें.
- फिर से कोशिश करने के तरीके में, एक्स्पोनेंशियल बैकऑफ़ लागू करें. (उदाहरण के लिए, अगर आपने पहली बार कोशिश करने से पहले एक सेकंड इंतज़ार किया है, तो अगली बार कोशिश करने से पहले कम से कम दो सेकंड इंतज़ार करें. इसके बाद, चार सेकंड और इसी तरह आगे भी इंतज़ार करें). अगर आपको एक साथ कई मैसेज भेजने हैं, तो जिटरिंग का इस्तेमाल करें. ज़्यादा जानकारी के लिए, फिर से कोशिश करने की सुविधा को मैनेज करनादेखें या FCM का स्टेटस डैशबोर्ड देखें. इससे यह पता चलेगा कि FCM की सेवाओं में कोई रुकावट तो नहीं आ रही है. ईमेल भेजने वाले ऐसे खाते जिनसे समस्याएं होती हैं उन्हें ईमेल भेजने से रोका जा सकता है.
INTERNAL (एचटीटीपी गड़बड़ी कोड = 500) कोई अज्ञात तकनीकी गड़बड़ी हुई. अनुरोध को प्रोसेस करते समय सर्वर में कोई गड़बड़ी हुई. फिर से कोशिश करने से जुड़ी जानकारी में दिए गए सुझावों का पालन करके, उसी अनुरोध को फिर से भेजा जा सकता है या FCM के स्टेटस डैशबोर्ड को देखा जा सकता है. यह पता लगाने के लिए कि क्या सेवा में कोई रुकावट है, जिससे FCM पर असर पड़ रहा है. अगर गड़बड़ी बनी रहती है, तो कृपया Firebase की सहायता टीम से संपर्क करें.
THIRD_PARTY_AUTH_ERROR (एचटीटीपी गड़बड़ी कोड = 401) APNs सर्टिफ़िकेट या वेब पुश ऑथराइज़ेशन कुंजी अमान्य थी या मौजूद नहीं थी. किसी iOS डिवाइस या वेब पुश रजिस्ट्रेशन को टारगेट करने वाला मैसेज नहीं भेजा जा सका. देखें कि आपके डेवलपमेंट और प्रोडक्शन क्रेडेंशियल मान्य हैं या नहीं.

Admin SDK से जुड़ी गड़बड़ी के कोड

यहां दी गई टेबल में, Firebase Admin FCM API के गड़बड़ी कोड और उनके बारे में जानकारी दी गई है. साथ ही, गड़बड़ियों को ठीक करने का तरीका भी बताया गया है.

त्रुटि कोड समस्या का ब्यौरा और उसे हल करने का तरीका
messaging/invalid-argument FCM तरीके को अमान्य तर्क दिया गया था. गड़बड़ी के मैसेज में अतिरिक्त जानकारी होनी चाहिए.
messaging/invalid-recipient मैसेज पाने वाले का ईमेल पता अमान्य है. गड़बड़ी के मैसेज में अतिरिक्त जानकारी होनी चाहिए.
messaging/invalid-payload मैसेज का अमान्य पेलोड ऑब्जेक्ट दिया गया है. गड़बड़ी के मैसेज में अतिरिक्त जानकारी होनी चाहिए.
messaging/invalid-data-payload-key डेटा मैसेज पेलोड में अमान्य कुंजी मौजूद है. प्रतिबंधित कुंजियों के लिए, DataMessagePayload के रेफ़रंस दस्तावेज़ देखें.
messaging/payload-size-limit-exceeded दिए गए मैसेज पेलोड का साइज़, FCM की तय सीमा से ज़्यादा है. ज़्यादातर मैसेज के लिए, यह सीमा 4096 बाइट है. विषयों को भेजे गए मैसेज के लिए, यह सीमा 2048 बाइट है. कुल पेलोड साइज़ में कुंजियां और वैल्यू, दोनों शामिल होती हैं.
messaging/invalid-options मैसेज के विकल्पों का अमान्य ऑब्जेक्ट दिया गया है. गड़बड़ी के मैसेज में अतिरिक्त जानकारी होनी चाहिए.
messaging/invalid-registration-token रजिस्ट्रेशन के लिए दिया गया टोकन अमान्य है. पक्का करें कि यह उस रजिस्ट्रेशन टोकन से मेल खाता हो जो क्लाइंट ऐप्लिकेशन को FCM के साथ रजिस्टर करने पर मिलता है. इसे छोटा न करें या इसमें अतिरिक्त वर्ण न जोड़ें.
messaging/registration-token-not-registered दिया गया रजिस्ट्रेशन टोकन रजिस्टर नहीं किया गया है. पहले मान्य रहे रजिस्ट्रेशन टोकन को कई वजहों से रद्द किया जा सकता है. इनमें ये वजहें शामिल हैं:
  • क्लाइंट ऐप्लिकेशन ने खुद को FCM से अनरजिस्टर कर दिया है.
  • क्लाइंट ऐप्लिकेशन का रजिस्ट्रेशन अपने-आप हट गया. ऐसा तब हो सकता है, जब उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल कर दे या Apple प्लैटफ़ॉर्म पर, APNs Feedback Service ने APNs टोकन को अमान्य के तौर पर रिपोर्ट किया हो.
  • रजिस्ट्रेशन टोकन की समयसीमा खत्म हो गई है. उदाहरण के लिए, Google रजिस्ट्रेशन टोकन को रीफ़्रेश करने का फ़ैसला कर सकता है या Apple डिवाइसों के लिए APNs टोकन की समयसीमा खत्म हो सकती है.
  • क्लाइंट ऐप्लिकेशन को अपडेट किया गया है, लेकिन नए वर्शन को मैसेज पाने के लिए कॉन्फ़िगर नहीं किया गया है.
इन सभी मामलों में, इस रजिस्ट्रेशन टोकन को हटा दें और इसका इस्तेमाल मैसेज भेजने के लिए न करें.
messaging/invalid-package-name यह मैसेज, ऐसे रजिस्ट्रेशन टोकन को भेजा गया था जिसके पैकेज का नाम, दिए गए restrictedPackageName विकल्प से मेल नहीं खाता.
messaging/message-rate-exceeded किसी टारगेट को मैसेज भेजने की दर बहुत ज़्यादा है. इस डिवाइस या विषय पर भेजे जाने वाले मैसेज की संख्या कम करें. साथ ही, इस टारगेट पर मैसेज भेजने के लिए तुरंत फिर से कोशिश न करें.
messaging/device-message-rate-exceeded किसी डिवाइस पर मैसेज भेजने की दर बहुत ज़्यादा है. इस डिवाइस पर भेजे जाने वाले मैसेज की संख्या कम करें. साथ ही, इस डिवाइस पर मैसेज भेजने की कोशिश तुरंत न करें.
messaging/topics-message-rate-exceeded किसी विषय के लिए, सदस्यों को भेजे जाने वाले ईमेल की दर बहुत ज़्यादा है. उस विषय के लिए भेजे गए मैसेज की संख्या कम करें. साथ ही, उस विषय के लिए मैसेज भेजने की कोशिश तुरंत न करें.
messaging/too-many-topics रजिस्ट्रेशन टोकन को ज़्यादा से ज़्यादा विषयों के लिए सदस्यता ले ली गई है. इसलिए, अब इसे किसी और विषय के लिए सदस्यता नहीं दी जा सकती.
messaging/invalid-apns-credentials Apple डिवाइस को टारगेट करने वाला मैसेज नहीं भेजा जा सका, क्योंकि ज़रूरी APNs SSL सर्टिफ़िकेट अपलोड नहीं किया गया था या उसकी समयसीमा खत्म हो गई है. देखें कि आपके डेवलपमेंट और प्रोडक्शन सर्टिफ़िकेट मान्य हैं या नहीं.
messaging/mismatched-credential इस एसडीके की पुष्टि करने के लिए इस्तेमाल किए गए क्रेडेंशियल के पास, दिए गए रजिस्ट्रेशन टोकन से जुड़े डिवाइस को मैसेज भेजने की अनुमति नहीं है. पक्का करें कि क्रेडेंशियल और रजिस्ट्रेशन टोकन, दोनों एक ही Firebase प्रोजेक्ट के हों. Firebase Admin SDK की पुष्टि करने के तरीके के बारे में दस्तावेज़ देखने के लिए, अपने ऐप्लिकेशन में Firebase जोड़ना लेख पढ़ें.
messaging/authentication-error SDK टूल, FCM सर्वर से पुष्टि नहीं कर सका. पक्का करें कि आपने Firebase Admin SDK को ऐसे क्रेडेंशियल से पुष्टि की हो जिसके पास Firebase Admin SDK को मैसेज भेजने की ज़रूरी अनुमतियां हों.FCM Firebase Admin SDK की पुष्टि करने के तरीके के बारे में दस्तावेज़ देखने के लिए, अपने ऐप्लिकेशन में Firebase जोड़ना लेख पढ़ें.
messaging/server-unavailable FCM सर्वर, अनुरोध को समय पर प्रोसेस नहीं कर सका. आपको उसी अनुरोध को फिर से भेजना चाहिए. हालांकि, आपको यह पक्का करना होगा कि:
  • अगर FCM कनेक्शन सर्वर से मिले रिस्पॉन्स में Retry-After हेडर शामिल है, तो उसका पालन करें.
  • फिर से कोशिश करने की सुविधा में, एक्स्पोनेंशियल बैक-ऑफ़ लागू करें. उदाहरण के लिए, अगर आपने पहली बार फिर से कोशिश करने से पहले एक सेकंड इंतज़ार किया है, तो अगली बार कम से कम दो सेकंड इंतज़ार करें. इसके बाद, चार सेकंड इंतज़ार करें. इसी तरह, इंतज़ार का समय बढ़ाते रहें. अगर आपको एक से ज़्यादा मैसेज भेजने हैं, तो हर मैसेज को अलग-अलग समय पर भेजें. इसके लिए, हर मैसेज को भेजने में कुछ समय का अंतर रखें. इससे सभी मैसेज के लिए एक साथ नया अनुरोध नहीं किया जाएगा.
समस्याएं पैदा करने वाले ईमेल पतों को ब्लॉकलिस्ट किया जा सकता है.
messaging/internal-error अनुरोध को प्रोसेस करते समय FCM सर्वर में कोई गड़बड़ी हुई. messaging/server-unavailable वाली पिछली लाइन में दी गई ज़रूरी शर्तों को पूरा करके, उसी अनुरोध को फिर से भेजा जा सकता है. अगर गड़बड़ी बनी रहती है, तो कृपया गड़बड़ी की शिकायत वाले सहायता चैनल पर जाकर, समस्या की शिकायत करें.
messaging/unknown-error सर्वर में कोई ऐसी गड़बड़ी हुई जिसके बारे में जानकारी नहीं है. ज़्यादा जानकारी के लिए, गड़बड़ी के मैसेज में सर्वर से मिला रॉ रिस्पॉन्स देखें. अगर आपको यह गड़बड़ी दिखती है, तो कृपया गड़बड़ी के पूरे मैसेज की शिकायत हमारे गड़बड़ी की रिपोर्ट वाले सहायता चैनल पर करें.