FCM ত্রুটি কোড

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

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

এখানে দুটি নমুনা ত্রুটি প্রতিক্রিয়া আছে:

উদাহরণ 1: একটি ডেটা বার্তায় একটি অবৈধ মান সহ 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"
          }
        ]
      }
    ]
  }
}

উদাহরণ 2: একটি অবৈধ রেজিস্ট্রেশন টোকেন সহ 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"
      }
    ]
   }
}

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

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

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

অ্যাডমিন SDK ত্রুটি কোড

নিম্নলিখিত সারণীতে Firebase অ্যাডমিন 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 ফিডব্যাক পরিষেবা APNs টোকেনটিকে অবৈধ হিসাবে রিপোর্ট করে।
  • নিবন্ধন টোকেন মেয়াদ শেষ হয়েছে. উদাহরণস্বরূপ, Google রেজিস্ট্রেশন টোকেনগুলি রিফ্রেশ করার সিদ্ধান্ত নিতে পারে বা Apple ডিভাইসগুলির জন্য 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 ডিভাইসে লক্ষ্য করা একটি বার্তা পাঠানো যায়নি কারণ প্রয়োজনীয় APNs 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 সার্ভার সময়মত অনুরোধটি প্রক্রিয়া করতে পারেনি৷ আপনার একই অনুরোধ পুনরায় চেষ্টা করা উচিত, তবে আপনাকে অবশ্যই:
  • Retry-After শিরোনামটিকে সম্মান করুন যদি এটি FCM সংযোগ সার্ভারের প্রতিক্রিয়াতে অন্তর্ভুক্ত থাকে।
  • আপনার পুনরায় চেষ্টা করার পদ্ধতিতে সূচকীয় ব্যাক-অফ প্রয়োগ করুন। উদাহরণস্বরূপ, আপনি যদি প্রথম পুনঃপ্রচেষ্টার আগে এক সেকেন্ড অপেক্ষা করেন, তাহলে পরেরটির আগে কমপক্ষে দুই সেকেন্ড, তারপর চার সেকেন্ড অপেক্ষা করুন এবং সেকেন্ডের ব্যবধান বাড়াতে থাকুন। আপনি যদি একাধিক বার্তা পাঠান, একই সময়ে সমস্ত বার্তার জন্য একটি নতুন অনুরোধ জারি করা এড়াতে প্রতিটিকে একটি অতিরিক্ত র্যান্ডম পরিমাণে স্বাধীনভাবে বিলম্বিত করুন।
যেসব প্রেরক সমস্যা সৃষ্টি করে তাদের ব্লকলিস্ট হওয়ার ঝুঁকি থাকে।
messaging/internal-error অনুরোধটি প্রক্রিয়া করার চেষ্টা করার সময় FCM সার্ভার একটি ত্রুটির সম্মুখীন হয়েছে৷ আগের messaging/server-unavailable সারিতে তালিকাভুক্ত প্রয়োজনীয়তাগুলি অনুসরণ করে আপনি একই অনুরোধটি পুনরায় চেষ্টা করতে পারেন। ত্রুটি অব্যাহত থাকলে, আমাদের বাগ রিপোর্ট সমর্থন চ্যানেলে সমস্যাটি রিপোর্ট করুন।
messaging/unknown-error একটি অজানা সার্ভার ত্রুটি ফিরে এসেছে. আরো বিস্তারিত জানার জন্য ত্রুটি বার্তায় কাঁচা সার্ভার প্রতিক্রিয়া দেখুন. আপনি যদি এই ত্রুটিটি পান, দয়া করে সম্পূর্ণ ত্রুটি বার্তাটি আমাদের বাগ রিপোর্ট সমর্থন চ্যানেলে রিপোর্ট করুন৷