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 बाइट. इसमें कुंजियां और वैल्यू, दोनों शामिल होती हैं.
अमान्य डेटा कुंजी: पक्का करें कि पेलोड डेटा में ऐसी कोई कुंजी न हो जिसका इस्तेमाल FCM अंदरूनी तौर पर करता है. जैसे, from, gcm या google से शुरू होने वाली कोई भी वैल्यू. ध्यान दें कि कुछ शब्दों (जैसे, 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 बाइट है. विषयों को भेजे गए मैसेज के लिए, यह सीमा 2,048 बाइट है. कुल पेलोड साइज़ में कुंजियां और वैल्यू, दोनों शामिल होती हैं.
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 एसएसएल सर्टिफ़िकेट अपलोड नहीं किया गया था या उसकी समयसीमा खत्म हो गई है. अपने डेवलपमेंट और प्रोडक्शन सर्टिफ़िकेट की वैधता की जांच करें.
messaging/mismatched-credential इस एसडीके की पुष्टि करने के लिए इस्तेमाल किए गए क्रेडेंशियल के पास, दिए गए रजिस्ट्रेशन टोकन से जुड़े डिवाइस को मैसेज भेजने की अनुमति नहीं है. पक्का करें कि क्रेडेंशियल और रजिस्ट्रेशन टोकन, दोनों एक ही Firebase प्रोजेक्ट के हों. Firebase Admin SDK की पुष्टि करने के तरीके के बारे में दस्तावेज़ देखने के लिए, अपने ऐप्लिकेशन में Firebase जोड़ना लेख पढ़ें.
messaging/authentication-error SDK टूल, FCM सर्वर से पुष्टि नहीं कर सका. पक्का करें कि आपने 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 सर्वर में कोई ऐसी गड़बड़ी हुई जिसके बारे में जानकारी नहीं है. ज़्यादा जानकारी के लिए, गड़बड़ी के मैसेज में सर्वर से मिला रॉ रिस्पॉन्स देखें. अगर आपको यह गड़बड़ी दिखती है, तो कृपया गड़बड़ी के पूरे मैसेज की शिकायत हमारे गड़बड़ी की रिपोर्ट वाले सहायता चैनल पर करें.