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

एचटीटीपी 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"
      }
    ]
   }
}

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

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

त्रुटि कोड समस्या की जानकारी और उसे ठीक करने का तरीका
UNSPECIFIED_ERROR इस गड़बड़ी के बारे में कोई और जानकारी उपलब्ध नहीं है. कोई नहीं.
INVALID_ARGUMENT (एचटीटीपी गड़बड़ी कोड = 400) अनुरोध पैरामीटर अमान्य थे. कौनसा फ़ील्ड अमान्य है, यह बताने के लिए google.rpc.BadRequest टाइप का एक्सटेंशन दिखाया जाता है. इसकी संभावित वजहें ये हो सकती हैं: अमान्य रजिस्ट्रेशन, पैकेज का नाम अमान्य है, मैसेज बहुत बड़ा है, डेटा कुंजी अमान्य है, टीटीएल (TTL) अमान्य है या अन्य अमान्य पैरामीटर.
रजिस्ट्रेशन अमान्य है: सर्वर को भेजे गए रजिस्ट्रेशन टोकन का फ़ॉर्मैट देखें. पक्का करें कि यह उस रजिस्ट्रेशन टोकन से मेल खाता हो जो क्लाइंट ऐप्लिकेशन को FCM के साथ रजिस्टर करने पर मिलता है. टोकन को छोटा न करें या उसमें अतिरिक्त वर्ण न जोड़ें.
पैकेज का नाम अमान्य है: पक्का करें कि मैसेज, उस रजिस्ट्रेशन टोकन को भेजा गया हो जिसका पैकेज का नाम, अनुरोध में दी गई वैल्यू से मेल खाता हो.
मैसेज का साइज़ बहुत ज़्यादा है: देखें कि मैसेज में शामिल पेलोड डेटा का कुल साइज़, FCM की तय सीमा से ज़्यादा न हो: ज़्यादातर मैसेज के लिए 4,096 बाइट या विषयों के लिए मैसेज के मामले में 2,048 बाइट. इसमें कुंजियां और वैल्यू, दोनों शामिल होती हैं.
अमान्य डेटा कुंजी: पक्का करें कि पेलोड डेटा में कोई ऐसी कुंजी (जैसे, from, gcm या google से शुरू होने वाली कोई वैल्यू) शामिल न हो जिसका इस्तेमाल FCM अंदरूनी तौर पर करता है. ध्यान दें कि FCM में भी कुछ शब्दों (जैसे, collapse_key) का इस्तेमाल किया जाता है. हालांकि, इन्हें पेलोड में इस्तेमाल करने की अनुमति है. ऐसे में, पेलोड की वैल्यू को FCM की वैल्यू से बदल दिया जाएगा.
अमान्य टीटीएल: पक्का करें कि ttl में इस्तेमाल की गई वैल्यू, सेकंड में कुल समय को दिखाने वाली कोई पूर्णांक हो. यह समय 0 से 2,419,200 (चार हफ़्ते) के बीच होना चाहिए.
अमान्य पैरामीटर: देखें कि दिए गए पैरामीटर का नाम और टाइप सही है या नहीं.
UNREGISTERED (एचटीटीपी गड़बड़ी कोड = 404) ऐप्लिकेशन इंस्टेंस को FCM से अनरजिस्टर कर दिया गया था. आम तौर पर, इसका मतलब है कि इस्तेमाल किया गया टोकन अब मान्य नहीं है और इसका इस्तेमाल नहीं किया जा सकता. यह गड़बड़ी, रजिस्ट्रेशन टोकन मौजूद न होने या रजिस्ट्रेशन नहीं किए गए टोकन की वजह से हो सकती है.
रजिस्ट्रेशन मौजूद नहीं है: अगर मैसेज का टारगेट token वैल्यू है, तो देखें कि अनुरोध में रजिस्ट्रेशन टोकन शामिल है या नहीं.
रजिस्टर नहीं किया गया: कई मामलों में, मौजूदा रजिस्ट्रेशन टोकन अमान्य हो सकता है. जैसे:
- अगर क्लाइंट ऐप्लिकेशन, FCM के साथ अनरजिस्टर हो जाता है.
- अगर क्लाइंट ऐप्लिकेशन अपने-आप अनरजिस्टर हो जाता है. ऐसा तब हो सकता है, जब उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल कर दे. उदाहरण के लिए, iOS पर, अगर APNs फ़ीडबैक सेवा ने APNs टोकन को अमान्य बताया है.
- अगर रजिस्टर करने के लिए इस्तेमाल किए जाने वाले टोकन की समयसीमा खत्म हो जाती है. उदाहरण के लिए, Google रजिस्टर करने के लिए इस्तेमाल किए जाने वाले टोकन को रीफ़्रेश कर सकता है या iOS डिवाइसों के लिए APNs टोकन की समयसीमा खत्म हो सकती है.
- अगर क्लाइंट ऐप्लिकेशन अपडेट हो गया है, लेकिन नया वर्शन मैसेज पाने के लिए कॉन्फ़िगर नहीं किया गया है.
इन सभी मामलों में, ऐप्लिकेशन सर्वर से इस रजिस्ट्रेशन टोकन को हटा दें और मैसेज भेजने के लिए इसका इस्तेमाल बंद कर दें.
SENDER_ID_MISMATCH (एचटीटीपी गड़बड़ी कोड = 403) पुष्टि किया गया ईमेल पता, रजिस्ट्रेशन टोकन के लिए ईमेल पते से अलग है. रजिस्ट्रेशन टोकन, ईमेल भेजने वाले लोगों के किसी खास ग्रुप से जुड़ा होता है. जब कोई क्लाइंट ऐप्लिकेशन, FCM के लिए रजिस्टर करता है, तो उसे यह बताना होगा कि किन लोगों को मैसेज भेजने की अनुमति है. क्लाइंट ऐप्लिकेशन पर मैसेज भेजते समय, आपको इनमें से किसी एक ईमेल पते का इस्तेमाल करना चाहिए. किसी दूसरे ईमेल पते का इस्तेमाल करने पर, मौजूदा रजिस्ट्रेशन टोकन काम नहीं करेंगे.
QUOTA_EXCEEDED (एचटीटीपी गड़बड़ी कोड = 429) मैसेज टारगेट के लिए, भेजने की सीमा पार हो गई है. किस कोटा को पार किया गया है, यह बताने के लिए google.rpc.QuotaFailure टाइप का एक्सटेंशन दिखाया जाता है. यह गड़बड़ी, मैसेज भेजने की दर का कोटा पार होने, डिवाइस के लिए मैसेज भेजने की दर का कोटा पार होने या विषय के लिए मैसेज भेजने की दर का कोटा पार होने की वजह से हो सकती है.
मैसेज भेजने की दर ज़्यादा है: मैसेज भेजने की दर बहुत ज़्यादा है. आपको मैसेज भेजने की कुल दर कम करनी होगी. अस्वीकार किए गए मैसेज को फिर से भेजने के लिए, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें. इसमें, शुरुआती देरी कम से कम एक मिनट होनी चाहिए.
डिवाइस पर मैसेज भेजने की दर ज़्यादा है: किसी डिवाइस पर मैसेज भेजने की दर बहुत ज़्यादा है. किसी एक डिवाइस पर मैसेज भेजने की दर की सीमा देखें. इस डिवाइस पर भेजे जाने वाले मैसेज की संख्या कम करें. साथ ही, मैसेज भेजने की कोशिश फिर से करने के लिए, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें.
किसी विषय के लिए मैसेज भेजने की दर तय सीमा से ज़्यादा है: किसी विषय के लिए सदस्यों को भेजे जाने वाले मैसेज की दर बहुत ज़्यादा है. इस विषय के लिए भेजे गए मैसेज की संख्या कम करें. साथ ही, मैसेज भेजने की कोशिश फिर से करने के लिए, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें. इसमें, शुरुआती देरी कम से कम एक मिनट की होनी चाहिए.
UNAVAILABLE (एचटीटीपी गड़बड़ी कोड = 503) सर्वर पर ज़्यादा अनुरोध हैं. सर्वर, अनुरोध को समय पर प्रोसेस नहीं कर सका. उसी अनुरोध को फिर से भेजें. हालांकि, आपको ये काम करने होंगे:
- अगर FCM कनेक्शन सर्वर के रिस्पॉन्स में 'फिर से कोशिश करें' हेडर शामिल है, तो उसे लागू करें.
- फिर से कोशिश करने की सुविधा में एक्सपोनेंशियल बैकऑफ़ लागू करें. उदाहरण के लिए, अगर आपने पहली बार फिर से कोशिश करने से पहले एक सेकंड इंतज़ार किया है, तो अगली बार कम से कम दो सेकंड इंतज़ार करें. इसके बाद, चार सेकंड और इसी तरह इंतज़ार करें. अगर एक से ज़्यादा मैसेज भेजे जा रहे हैं, तो जटरिंग लागू करें. ज़्यादा जानकारी के लिए, फिर से कोशिश करने की सुविधा को मैनेज करनादेखें. इसके अलावा, 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 की साइज़ की सीमा से ज़्यादा है. ज़्यादातर मैसेज के लिए, साइज़ की सीमा 4,096 बाइट होती है. विषयों पर भेजे जाने वाले मैसेज के लिए, 2048 बाइट की सीमा होती है. पेलोड के कुल साइज़ में, कुंजियां और वैल्यू, दोनों शामिल होती हैं.
messaging/invalid-options मैसेज के विकल्पों का अमान्य ऑब्जेक्ट दिया गया था. गड़बड़ी के मैसेज में, अतिरिक्त जानकारी होनी चाहिए.
messaging/invalid-registration-token रजिस्ट्रेशन के लिए दिया गया टोकन अमान्य है. पक्का करें कि यह FCM के साथ रजिस्टर करने पर, क्लाइंट ऐप्लिकेशन को मिले रजिस्ट्रेशन टोकन से मेल खाता हो. इसमें कुछ भी न जोड़ें और न ही कुछ काटें.
messaging/registration-token-not-registered दिया गया रजिस्ट्रेशन टोकन रजिस्टर नहीं है. पहले मान्य रहा रजिस्ट्रेशन टोकन, कई वजहों से रजिस्ट्रेशन से हटाया जा सकता है. इनमें ये वजहें शामिल हैं:
  • क्लाइंट ऐप्लिकेशन ने FCM से अपना रजिस्ट्रेशन रद्द कर दिया है.
  • क्लाइंट ऐप्लिकेशन का रजिस्ट्रेशन अपने-आप रद्द हो गया. ऐसा तब हो सकता है, जब उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल कर दे या Apple प्लैटफ़ॉर्म पर, APNs फ़ीडबैक सेवा ने 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 इस SDK की पुष्टि करने के लिए इस्तेमाल किए गए क्रेडेंशियल के पास, दिए गए रजिस्ट्रेशन टोकन से जुड़े डिवाइस पर मैसेज भेजने की अनुमति नहीं है. पक्का करें कि क्रेडेंशियल और रजिस्ट्रेशन टोकन, दोनों एक ही 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 सर्वर में कोई ऐसी गड़बड़ी हुई जिसके बारे में जानकारी नहीं है. ज़्यादा जानकारी के लिए, गड़बड़ी के मैसेज में, सर्वर का रॉ रिस्पॉन्स देखें. अगर आपको गड़बड़ी का यह मैसेज मिलता है, तो कृपया गड़बड़ी की शिकायत वाले हमारे सहायता चैनल पर, गड़बड़ी का पूरा मैसेज बताएं.