FCM ত্রুটি কোড

HTTP v1 API-এর জন্য REST ত্রুটি কোডগুলি

HTTP v1 API-এর জন্য HTTP ত্রুটির প্রতিক্রিয়াগুলিতে একটি ত্রুটি কোড, একটি ত্রুটি বার্তা এবং ত্রুটির স্থিতি থাকে। এগুলিতে ত্রুটি সম্পর্কে আরও বিশদ সহ একটি details অ্যারেও থাকতে পারে।

এখানে দুটি নমুনা ত্রুটির প্রতিক্রিয়া দেওয়া হল:

উদাহরণ ১: একটি ডেটা বার্তায় একটি অবৈধ মান সহ একটি HTTP v1 API অনুরোধ থেকে ত্রুটির প্রতিক্রিয়া

{
  "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"
          }
        ]
      }
    ]
  }
}

উদাহরণ ২: একটি অবৈধ নিবন্ধন টোকেন সহ একটি HTTP v1 API অনুরোধ থেকে ত্রুটির প্রতিক্রিয়া

{
  "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 অ্যারেতে বিভিন্ন ধরণের মান রয়েছে। প্রথম উদাহরণে type.googleapis.com/google.rpc.BadRequest টাইপ রয়েছে যা অনুরোধের মানগুলিতে একটি ত্রুটি নির্দেশ করে। type.googleapis.com/google.firebase.fcm.v1.FcmError টাইপ সহ দ্বিতীয় উদাহরণে একটি FCM নির্দিষ্ট ত্রুটি রয়েছে। অনেক ত্রুটির জন্য, details অ্যারেতে সেই তথ্য থাকে যা আপনাকে ডিবাগ করতে এবং একটি রেজোলিউশন খুঁজে বের করতে হবে।

নিম্নলিখিত টেবিলে FCM v1 REST API ত্রুটি কোড এবং তাদের বিবরণ তালিকাভুক্ত করা হয়েছে।

ত্রুটি কোড বর্ণনা এবং সমাধানের ধাপ
UNSPECIFIED_ERROR এই ত্রুটি সম্পর্কে আর কোনও তথ্য উপলব্ধ নেই। কোনোটিই নয়।
INVALID_ARGUMENT (HTTP ত্রুটি কোড = 400) অনুরোধের প্যারামিটারগুলি অবৈধ ছিল। কোন ক্ষেত্রটি অবৈধ ছিল তা নির্দিষ্ট করার জন্য google.rpc.BadRequest ধরণের একটি এক্সটেনশন ফেরত পাঠানো হয়। সম্ভাব্য কারণগুলির মধ্যে রয়েছে অবৈধ নিবন্ধন, অবৈধ প্যাকেজ নাম, বার্তাটি খুব বড়, অবৈধ ডেটা কী, অবৈধ TTL, অথবা অন্যান্য অবৈধ পরামিতি।
অবৈধ নিবন্ধন : সার্ভারে আপনি যে নিবন্ধন টোকেনটি পাস করেন তার ফর্ম্যাটটি পরীক্ষা করুন। নিশ্চিত করুন যে এটি FCM-এ নিবন্ধন করার সময় ক্লায়েন্ট অ্যাপটি যে নিবন্ধন টোকেনটি পায় তার সাথে মেলে। টোকেনটি ছোট করবেন না বা অতিরিক্ত অক্ষর যোগ করবেন না।
অবৈধ প্যাকেজ নাম : নিশ্চিত করুন যে বার্তাটি এমন একটি নিবন্ধন টোকেনের উদ্দেশ্যে সম্বোধন করা হয়েছে যার প্যাকেজের নাম অনুরোধে পাস করা মানের সাথে মেলে।
বার্তাটি খুব বড় : একটি বার্তায় অন্তর্ভুক্ত পেলোড ডেটার মোট আকার FCM সীমা অতিক্রম করে না তা পরীক্ষা করুন: বেশিরভাগ বার্তার জন্য 4096 বাইট, অথবা বিষয়গুলিতে বার্তার ক্ষেত্রে 2048 বাইট। এর মধ্যে কী এবং মান উভয়ই অন্তর্ভুক্ত।
অবৈধ ডেটা কী : পরীক্ষা করে দেখুন যে পেলোড ডেটাতে এমন কোনও কী (যেমন from, অথবা gcm, অথবা google দ্বারা প্রিফিক্স করা কোনও মান) নেই যা FCM দ্বারা অভ্যন্তরীণভাবে ব্যবহৃত হয়। মনে রাখবেন যে কিছু শব্দ (যেমন collapse_key) FCM দ্বারাও ব্যবহৃত হয় কিন্তু পেলোডে অনুমোদিত, এই ক্ষেত্রে পেলোড মান FCM মান দ্বারা ওভাররাইড করা হবে।
অবৈধ TTL : পরীক্ষা করুন যে ttl-এ ব্যবহৃত মানটি একটি পূর্ণসংখ্যা যা 0 থেকে 2,419,200 (4 সপ্তাহ) সেকেন্ডের মধ্যে একটি সময়কালকে প্রতিনিধিত্ব করে।
অবৈধ প্যারামিটার : প্রদত্ত প্যারামিটারগুলির সঠিক নাম এবং ধরণ আছে কিনা তা পরীক্ষা করুন।
UNREGISTERED (HTTP ত্রুটি কোড = 404) FCM থেকে অ্যাপের উদাহরণটি নিবন্ধনমুক্ত করা হয়েছে। এর অর্থ সাধারণত ব্যবহৃত টোকেনটি আর বৈধ নয় এবং একটি নতুন টোকেন ব্যবহার করতে হবে। এই ত্রুটিটি নিবন্ধন টোকেন অনুপস্থিত, অথবা নিবন্ধনবিহীন টোকেনের কারণে হতে পারে।
নিবন্ধন অনুপস্থিত : যদি বার্তার লক্ষ্য একটি token মান হয়, তাহলে অনুরোধটিতে একটি নিবন্ধন টোকেন আছে কিনা তা পরীক্ষা করুন।
নিবন্ধিত নয় : একটি বিদ্যমান নিবন্ধন টোকেন বেশ কয়েকটি পরিস্থিতিতে বৈধতা হারাতে পারে, যার মধ্যে রয়েছে:
- যদি ক্লায়েন্ট অ্যাপটি FCM-এর সাথে নিবন্ধন বাতিল করে।
- যদি ক্লায়েন্ট অ্যাপটি স্বয়ংক্রিয়ভাবে নিবন্ধিত না থাকে, যা ব্যবহারকারী অ্যাপ্লিকেশনটি আনইনস্টল করলে ঘটতে পারে। উদাহরণস্বরূপ, iOS-এ, যদি APNs ফিডব্যাক সার্ভিস APNs টোকেনটিকে অবৈধ বলে রিপোর্ট করে।
- যদি রেজিস্ট্রেশন টোকেনের মেয়াদ শেষ হয়ে যায় (উদাহরণস্বরূপ, গুগল রেজিস্ট্রেশন টোকেন রিফ্রেশ করার সিদ্ধান্ত নিতে পারে, অথবা iOS ডিভাইসের জন্য APN টোকেনের মেয়াদ শেষ হয়ে গেছে)।
- যদি ক্লায়েন্ট অ্যাপটি আপডেট করা থাকে কিন্তু নতুন সংস্করণটি বার্তা গ্রহণের জন্য কনফিগার করা না থাকে।
এই সমস্ত ক্ষেত্রে, অ্যাপ সার্ভার থেকে এই নিবন্ধন টোকেনটি সরিয়ে ফেলুন এবং বার্তা পাঠানোর জন্য এটি ব্যবহার বন্ধ করুন।
SENDER_ID_MISMATCH (HTTP ত্রুটি কোড = 403) প্রমাণিত প্রেরক আইডি নিবন্ধন টোকেনের প্রেরক আইডি থেকে আলাদা। একটি নিবন্ধন টোকেন প্রেরকদের একটি নির্দিষ্ট গোষ্ঠীর সাথে সংযুক্ত থাকে। যখন একটি ক্লায়েন্ট অ্যাপ FCM-এর জন্য নিবন্ধন করে, তখন এটি অবশ্যই নির্দিষ্ট করে যে কোন প্রেরকদের বার্তা পাঠানোর অনুমতি রয়েছে। ক্লায়েন্ট অ্যাপে বার্তা পাঠানোর সময় আপনার সেই প্রেরক আইডিগুলির মধ্যে একটি ব্যবহার করা উচিত। আপনি যদি অন্য কোনও প্রেরকে স্যুইচ করেন, তাহলে বিদ্যমান নিবন্ধন টোকেনগুলি কাজ করবে না।
QUOTA_EXCEEDED (HTTP ত্রুটি কোড = 429) বার্তা লক্ষ্যের জন্য পাঠানোর সীমা অতিক্রম করেছে। কোন কোটা অতিক্রম করা হয়েছে তা নির্দিষ্ট করার জন্য google.rpc.QuotaFailure ধরণের একটি এক্সটেনশন ফেরত পাঠানো হয়। এই ত্রুটিটি বার্তা হারের কোটা অতিক্রম করে, ডিভাইস বার্তা হারের কোটা অতিক্রম করে, অথবা বিষয় বার্তা হারের কোটা অতিক্রম করে হতে পারে।
বার্তা প্রেরণের হার অতিক্রম করেছে : বার্তা প্রেরণের হার অত্যধিক। আপনাকে অবশ্যই সামগ্রিকভাবে বার্তা প্রেরণের হার কমাতে হবে। প্রত্যাখ্যাত বার্তাগুলি পুনরায় চেষ্টা করার জন্য ন্যূনতম ১ মিনিটের প্রাথমিক বিলম্ব সহ সূচকীয় ব্যাকঅফ ব্যবহার করুন।
ডিভাইসের বার্তার হার অতিক্রম করেছে : একটি নির্দিষ্ট ডিভাইসে বার্তা পাঠানোর হার খুব বেশি। একটি একক ডিভাইসে বার্তার হারের সীমা দেখুন । এই ডিভাইসে পাঠানো বার্তার সংখ্যা হ্রাস করুন এবং পুনরায় পাঠানোর চেষ্টা করতে সূচকীয় ব্যাকঅফ ব্যবহার করুন।
বিষয়ভিত্তিক বার্তার হার অতিক্রম করেছে : একটি নির্দিষ্ট বিষয়ে গ্রাহকদের কাছে বার্তা পাঠানোর হার অত্যধিক। এই বিষয়ে পাঠানো বার্তার সংখ্যা কমিয়ে দিন এবং পুনরায় পাঠানোর চেষ্টা করার জন্য ন্যূনতম ১ মিনিটের প্রাথমিক বিলম্ব সহ সূচকীয় ব্যাকঅফ ব্যবহার করুন।
UNAVAILABLE (HTTP ত্রুটি কোড = 503) সার্ভারটি ওভারলোড হয়ে গেছে। সার্ভার সময়মতো অনুরোধটি প্রক্রিয়া করতে পারেনি। একই অনুরোধটি আবার চেষ্টা করুন, তবে আপনাকে অবশ্যই:
- FCM সংযোগ সার্ভারের প্রতিক্রিয়ায় যদি "Retry-After" হেডারটি অন্তর্ভুক্ত থাকে তবে তা সম্মান করুন।
- আপনার পুনঃচেষ্টা পদ্ধতিতে সূচকীয় ব্যাকঅফ প্রয়োগ করুন। (যেমন, যদি আপনি প্রথম পুনঃচেষ্টার আগে এক সেকেন্ড অপেক্ষা করেন, তাহলে পরবর্তীটির আগে কমপক্ষে দুই সেকেন্ড অপেক্ষা করুন, তারপর ৪ সেকেন্ড এবং আরও অনেক কিছু)। যদি আপনি একাধিক বার্তা পাঠান, তাহলে জিটারিং প্রয়োগ করার কথা বিবেচনা করুন। আরও তথ্যের জন্য, পুনঃচেষ্টা পরিচালনা দেখুন, অথবা FCM-কে প্রভাবিত করে এমন কোনও চলমান পরিষেবা ব্যাহত হচ্ছে কিনা তা সনাক্ত করতে FCM স্ট্যাটাস ড্যাশবোর্ডটি পরীক্ষা করুন । সমস্যা সৃষ্টিকারী প্রেরকদের তালিকাভুক্ত করার ঝুঁকি থাকে।
INTERNAL (HTTP ত্রুটি কোড = 500) একটি অজানা অভ্যন্তরীণ ত্রুটি ঘটেছে। অনুরোধটি প্রক্রিয়া করার সময় সার্ভারটি একটি ত্রুটির সম্মুখীন হয়েছে। FCM-কে প্রভাবিত করে এমন কোনও চলমান পরিষেবা ব্যাঘাত ঘটছে কিনা তা সনাক্ত করতে আপনি পুনঃপ্রচেষ্টা পরিচালনা করা বা FCM স্ট্যাটাস ড্যাশবোর্ড পরীক্ষা করার পরামর্শ অনুসরণ করে একই অনুরোধটি আবার চেষ্টা করতে পারেন। যদি ত্রুটিটি অব্যাহত থাকে, তাহলে অনুগ্রহ করে Firebase সহায়তার সাথে যোগাযোগ করুন।
THIRD_PARTY_AUTH_ERROR (HTTP ত্রুটি কোড = 401) APN সার্টিফিকেট বা ওয়েব পুশ প্রমাণীকরণ কী অবৈধ বা অনুপস্থিত। iOS ডিভাইস বা ওয়েব পুশ রেজিস্ট্রেশনকে লক্ষ্য করে কোনও বার্তা পাঠানো যায়নি। আপনার ডেভেলপমেন্ট এবং প্রোডাকশন শংসাপত্রের বৈধতা পরীক্ষা করুন।

অ্যাডমিন 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 থেকে নিজেকে আনরেজিস্টার করেছে।
  • ক্লায়েন্ট অ্যাপটি স্বয়ংক্রিয়ভাবে নিবন্ধনমুক্ত হয়ে গেছে। ব্যবহারকারী যদি অ্যাপ্লিকেশনটি আনইনস্টল করে অথবা অ্যাপল প্ল্যাটফর্মে, যদি APNs ফিডব্যাক সার্ভিস APNs টোকেনটিকে অবৈধ বলে রিপোর্ট করে তবে এটি ঘটতে পারে।
  • রেজিস্ট্রেশন টোকেনের মেয়াদ শেষ হয়ে গেছে। উদাহরণস্বরূপ, গুগল রেজিস্ট্রেশন টোকেন রিফ্রেশ করার সিদ্ধান্ত নিতে পারে অথবা অ্যাপল ডিভাইসের জন্য APN টোকেনের মেয়াদ শেষ হয়ে যেতে পারে।
  • ক্লায়েন্ট অ্যাপটি আপডেট করা হয়েছে, কিন্তু নতুন সংস্করণটি বার্তা গ্রহণের জন্য কনফিগার করা হয়নি।
এই সমস্ত ক্ষেত্রে, এই নিবন্ধন টোকেনটি সরিয়ে ফেলুন এবং বার্তা পাঠানোর জন্য এটি ব্যবহার বন্ধ করুন।
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 ডিভাইসে টার্গেট করা একটি বার্তা পাঠানো যায়নি কারণ প্রয়োজনীয় APN SSL সার্টিফিকেট আপলোড করা হয়নি অথবা মেয়াদ শেষ হয়ে গেছে। আপনার ডেভেলপমেন্ট এবং প্রোডাকশন সার্টিফিকেটের বৈধতা পরীক্ষা করুন।
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 একটি অজানা সার্ভার ত্রুটি ফিরে এসেছে। আরও বিস্তারিত জানার জন্য ত্রুটি বার্তায় র সার্ভার প্রতিক্রিয়া দেখুন। যদি আপনি এই ত্রুটিটি পান, তাহলে অনুগ্রহ করে আমাদের বাগ রিপোর্ট সহায়তা চ্যানেলে সম্পূর্ণ ত্রুটি বার্তাটি রিপোর্ট করুন।