ফায়ারবেস ক্লাউড মেসেজিং XMPP প্রোটোকল

এই ডকুমেন্টটি আপনার অ্যাপ সার্ভার, ক্লায়েন্ট অ্যাপস এবং Firebase Cloud Messaging (FCM) এর মধ্যে বার্তা পাঠাতে ব্যবহৃত XMPP সিনট্যাক্সের জন্য একটি রেফারেন্স প্রদান করে। আপনার অ্যাপ সার্ভারকে অবশ্যই এই শেষ পয়েন্টগুলির সাথে সংযুক্ত করতে হবে:

// Production
fcm-xmpp.googleapis.com:5235

// Testing
fcm-xmpp.googleapis.com:5236

উপলব্ধ পরামিতি এবং বিকল্পগুলি এই বিভাগে পড়ে:

ডাউনস্ট্রিম বার্তা সিনট্যাক্স

এই বিভাগটি ডাউনস্ট্রিম বার্তা পাঠানোর জন্য সিনট্যাক্স দেয়।

ডাউনস্ট্রিম XMPP বার্তা (JSON)

নিম্নলিখিত সারণীটি XMPP JSON বার্তাগুলির লক্ষ্য, বিকল্প এবং পেলোড তালিকাভুক্ত করে৷

সারণি 1 ডাউনস্ট্রিম XMPP বার্তাগুলির জন্য লক্ষ্য, বিকল্প এবং পেলোড (JSON)৷

প্যারামিটার ব্যবহার বর্ণনা
টার্গেট
to ঐচ্ছিক, স্ট্রিং

এই পরামিতি একটি বার্তা প্রাপক নির্দিষ্ট করে.

মানটি হতে পারে একটি ডিভাইসের রেজিস্ট্রেশন টোকেন, একটি ডিভাইস গ্রুপের বিজ্ঞপ্তি কী, অথবা একটি একক বিষয় (প্রিফিক্সড /topics/ এর সাথে)। একাধিক বিষয়ে পাঠাতে, condition প্যারামিটার ব্যবহার করুন।

condition ঐচ্ছিক, স্ট্রিং

এই প্যারামিটার শর্তগুলির একটি যৌক্তিক অভিব্যক্তি নির্দিষ্ট করে যা বার্তা লক্ষ্য নির্ধারণ করে।

সমর্থিত শর্ত: বিষয়, বিষয়গুলিতে "'yourTopic' হিসাবে ফর্ম্যাট করা হয়েছে"। এই মান কেস-সংবেদনশীল।

সমর্থিত অপারেটর: && , || . প্রতি বিষয় বার্তার জন্য সর্বাধিক দুটি অপারেটর সমর্থিত।

অপশন
message_id প্রয়োজনীয়, স্ট্রিং

এই প্যারামিটারটি অনন্যভাবে একটি XMPP সংযোগে একটি বার্তা সনাক্ত করে।

collapse_key ঐচ্ছিক, স্ট্রিং

এই প্যারামিটারটি বার্তাগুলির একটি গোষ্ঠী সনাক্ত করে (যেমন, collapse_key: "Updates Available" ) যেগুলি ভেঙে দেওয়া যেতে পারে যাতে ডেলিভারি পুনরায় শুরু হলে শুধুমাত্র শেষ বার্তাটি পাঠানো হয়৷ যখন ডিভাইসটি অনলাইনে ফিরে আসে বা ঘুমের বাইরে চলে আসে তখন একই বার্তাগুলির অনেকগুলি পাঠানো এড়াতে এটির উদ্দেশ্য।

কোন ক্রমে বার্তা পাঠানো হবে তার কোন গ্যারান্টি নেই।

দ্রষ্টব্য: যেকোন সময়ে সর্বাধিক 4টি ভিন্ন ধস কী অনুমোদিত। এর মানে হল FCM প্রতি ক্লায়েন্ট অ্যাপে 4টি ভিন্ন বার্তা একই সাথে সঞ্চয় করতে পারে। আপনি যদি এই সংখ্যাটি অতিক্রম করেন, তাহলে কোন গ্যারান্টি নেই যে 4টি পতন কী FCM রাখবে৷

priority ঐচ্ছিক, স্ট্রিং

বার্তার অগ্রাধিকার নির্ধারণ করে। বৈধ মান হল "স্বাভাবিক" এবং "উচ্চ।" Apple প্ল্যাটফর্মে, এগুলি APN-এর অগ্রাধিকার 5 এবং 10-এর সাথে মিলে যায়।

ডিফল্টরূপে, বিজ্ঞপ্তি বার্তাগুলি উচ্চ অগ্রাধিকারের সাথে পাঠানো হয়, এবং ডেটা বার্তাগুলি স্বাভাবিক অগ্রাধিকারের সাথে পাঠানো হয়। সাধারণ অগ্রাধিকার ক্লায়েন্ট অ্যাপের ব্যাটারি খরচ অপ্টিমাইজ করে এবং অবিলম্বে ডেলিভারির প্রয়োজন না হলে ব্যবহার করা উচিত। স্বাভাবিক অগ্রাধিকার সহ বার্তাগুলির জন্য, অ্যাপটি অনির্দিষ্ট বিলম্বের সাথে বার্তাটি পেতে পারে।

উচ্চ অগ্রাধিকারের সাথে একটি বার্তা পাঠানো হলে, এটি অবিলম্বে পাঠানো হয় এবং অ্যাপটি একটি বিজ্ঞপ্তি প্রদর্শন করতে পারে।

content_available ঐচ্ছিক, বুলিয়ান

Apple প্ল্যাটফর্মগুলিতে, APNs পেলোডে content-available উপস্থাপন করতে এই ক্ষেত্রটি ব্যবহার করুন৷ যখন একটি বিজ্ঞপ্তি বা বার্তা পাঠানো হয় এবং এটি true হিসাবে সেট করা হয়, তখন একটি নিষ্ক্রিয় ক্লায়েন্ট অ্যাপ জাগ্রত হয়, এবং বার্তাটি APN-এর মাধ্যমে একটি নীরব বিজ্ঞপ্তি হিসাবে পাঠানো হয়, FCM মাধ্যমে নয়। মনে রাখবেন যে APN-এ নীরব বিজ্ঞপ্তিগুলি ডেলিভারির গ্যারান্টি দেওয়া হয় না, এবং ব্যবহারকারীর লো পাওয়ার মোড চালু করা, অ্যাপ থেকে জোর করে ছেড়ে দেওয়া ইত্যাদি বিষয়গুলির উপর নির্ভর করতে পারে। Android-এ, ডেটা বার্তাগুলি ডিফল্টরূপে অ্যাপটিকে জাগিয়ে তোলে। Chrome এ, বর্তমানে সমর্থিত নয়।

mutable_content ঐচ্ছিক, JSON বুলিয়ান

Apple প্ল্যাটফর্মে, APNs পেলোডে mutable-content উপস্থাপন করতে এই ক্ষেত্রটি ব্যবহার করুন। যখন একটি বিজ্ঞপ্তি পাঠানো হয় এবং এটি true হিসাবে সেট করা হয়, তখন একটি বিজ্ঞপ্তি পরিষেবা অ্যাপ এক্সটেনশন ব্যবহার করে বিজ্ঞপ্তিটির বিষয়বস্তু প্রদর্শিত হওয়ার আগে সংশোধন করা যেতে পারে৷ এই প্যারামিটারটি Android এবং ওয়েবের জন্য উপেক্ষা করা হবে।

time_to_live ঐচ্ছিক, সংখ্যা

এই প্যারামিটারটি নির্দিষ্ট করে যে ডিভাইসটি অফলাইনে থাকলে কতক্ষণ (সেকেন্ডে) বার্তাটি FCM স্টোরেজে রাখা উচিত। সমর্থিত বেঁচে থাকার সর্বোচ্চ সময় হল 4 সপ্তাহ, এবং ডিফল্ট মান হল 4 সপ্তাহ৷ আরও তথ্যের জন্য, একটি বার্তার জীবনকাল সেট করা দেখুন।

dry_run ঐচ্ছিক, বুলিয়ান

এই প্যারামিটার, true সেট করা হলে, ডেভেলপারদের প্রকৃতপক্ষে একটি বার্তা না পাঠিয়ে একটি অনুরোধ পরীক্ষা করার অনুমতি দেয়।

ডিফল্ট মান false

পেলোড
data ঐচ্ছিক, বস্তু

এই প্যারামিটারটি বার্তার পেলোডের কী-মান জোড়া নির্দিষ্ট করে।

উদাহরণস্বরূপ, data:{"score":"3x1"}:

অ্যাপল প্ল্যাটফর্মে, যদি বার্তাটি APN দ্বারা বিতরণ করা হয় তবে এটি কাস্টম ডেটা ক্ষেত্রগুলিকে প্রতিনিধিত্ব করে। যদি এটি FCM দ্বারা বিতরণ করা হয়, তাহলে এটিকে AppDelegate application:didReceiveRemoteNotification: -এ একটি মূল মান অভিধান হিসাবে উপস্থাপন করা হয়।

অ্যান্ড্রয়েডে, এর ফলে স্ট্রিং মান 3x1 সহ একটি অভিপ্রায় অতিরিক্ত নামে score পাওয়া যায়।

কীটি একটি সংরক্ষিত শব্দ ("থেকে", "বার্তা_প্রকার", বা "google" বা "gcm" দিয়ে শুরু হওয়া কোনো শব্দ) হওয়া উচিত নয়। এই টেবিলে সংজ্ঞায়িত কোন শব্দ ব্যবহার করবেন না (যেমন collapse_key )।

স্ট্রিং ধরনের মান সুপারিশ করা হয়. আপনাকে অবজেক্ট বা অন্যান্য নন-স্ট্রিং ডেটা টাইপের (যেমন, পূর্ণসংখ্যা বা বুলিয়ান) স্ট্রিং-এ মান রূপান্তর করতে হবে।

notification ঐচ্ছিক, বস্তু এই প্যারামিটারটি বিজ্ঞপ্তি পেলোডের পূর্বনির্ধারিত, ব্যবহারকারী-দৃশ্যমান কী-মান জোড়া নির্দিষ্ট করে। বিস্তারিত জানার জন্য বিজ্ঞপ্তি পেলোড সমর্থন দেখুন। বিজ্ঞপ্তি বার্তা এবং ডেটা বার্তা বিকল্পগুলি সম্পর্কে আরও তথ্যের জন্য, বার্তার প্রকারগুলি দেখুন৷ যদি একটি বিজ্ঞপ্তি পেলোড প্রদান করা হয়, অথবা একটি Apple ডিভাইসে একটি বার্তার জন্য content_available বিকল্পটি true হিসাবে সেট করা হয়, তাহলে বার্তাটি APN-এর মাধ্যমে পাঠানো হয়, অন্যথায় এটি FCM মাধ্যমে পাঠানো হয়।

বিজ্ঞপ্তি পেলোড সমর্থন

অ্যাপল প্ল্যাটফর্ম এবং অ্যান্ড্রয়েডের জন্য বিজ্ঞপ্তি বার্তা তৈরির জন্য উপলব্ধ পূর্বনির্ধারিত কীগুলি নিম্নলিখিত সারণীগুলি তালিকাভুক্ত করে৷

টেবিল 2a. অ্যাপল - বিজ্ঞপ্তি বার্তাগুলির জন্য কী

প্যারামিটার ব্যবহার বর্ণনা
title ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির শিরোনাম।

এই ক্ষেত্রটি ফোন এবং ট্যাবলেটে দৃশ্যমান নয়৷

body ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির মূল অংশের পাঠ্য।

sound ঐচ্ছিক, স্ট্রিং

ডিভাইসটি নোটিফিকেশন পাওয়ার সময় বাজানোর শব্দ।

ক্লায়েন্ট অ্যাপের প্রধান বান্ডিলে বা অ্যাপের ডেটা কন্টেইনারের Library/Sounds ফোল্ডারে সাউন্ড ফাইল নির্দিষ্ট করে স্ট্রিং। আরও তথ্যের জন্য iOS বিকাশকারী লাইব্রেরি দেখুন।

badge ঐচ্ছিক, স্ট্রিং

হোম স্ক্রিনে অ্যাপ আইকনে ব্যাজের মান।

নির্দিষ্ট না থাকলে, ব্যাজ পরিবর্তন করা হয় না।

0 তে সেট করা হলে, ব্যাজটি সরানো হয়।

click_action ঐচ্ছিক, স্ট্রিং

ব্যবহারকারীর সাথে যুক্ত কর্ম বিজ্ঞপ্তিতে ক্লিক করুন।

APNs পেলোডের category সাথে মিলে যায়।

subtitle ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির সাবটাইটেল।

body_loc_key ঐচ্ছিক, স্ট্রিং

ব্যবহারকারীর বর্তমান স্থানীয়করণে বডি টেক্সট স্থানীয়করণ করতে ব্যবহার করার জন্য অ্যাপের স্ট্রিং সংস্থানগুলিতে বডি স্ট্রিংয়ের কী।

APNs পেলোডে loc-key সাথে মিলে যায়।

আরও তথ্যের জন্য পেলোড কী রেফারেন্স এবং আপনার দূরবর্তী বিজ্ঞপ্তিগুলির সামগ্রী স্থানীয়করণ দেখুন।

body_loc_args ঐচ্ছিক, স্ট্রিং হিসাবে JSON অ্যারে

ব্যবহারকারীর বর্তমান স্থানীয়করণে বডি টেক্সট স্থানীয়করণ করতে ব্যবহার করার জন্য body_loc_key এ বিন্যাস নির্দিষ্টকরণের জায়গায় ব্যবহার করা পরিবর্তনশীল স্ট্রিং মান।

APNs পেলোডে loc-args সাথে মিলে যায়।

আরও তথ্যের জন্য পেলোড কী রেফারেন্স এবং আপনার দূরবর্তী বিজ্ঞপ্তিগুলির সামগ্রী স্থানীয়করণ দেখুন।

title_loc_key ঐচ্ছিক, স্ট্রিং

ব্যবহারকারীর বর্তমান স্থানীয়করণে শিরোনাম পাঠ্যকে স্থানীয়করণ করতে ব্যবহার করার জন্য অ্যাপের স্ট্রিং সংস্থানগুলিতে শিরোনাম স্ট্রিংয়ের কী।

APN-এর পেলোডে title-loc-key এর সাথে মিলে যায়।

আরও তথ্যের জন্য পেলোড কী রেফারেন্স এবং আপনার দূরবর্তী বিজ্ঞপ্তিগুলির সামগ্রী স্থানীয়করণ দেখুন।

title_loc_args ঐচ্ছিক, স্ট্রিং হিসাবে JSON অ্যারে

শিরোনাম পাঠ্যকে ব্যবহারকারীর বর্তমান স্থানীয়করণে স্থানীয়করণ করতে ব্যবহার করতে title_loc_key এ বিন্যাস নির্দিষ্টকরণের জায়গায় ব্যবহার করা পরিবর্তনশীল স্ট্রিং মান।

APNs পেলোডে title-loc-args সাথে মিলে যায়।

আরও তথ্যের জন্য পেলোড কী রেফারেন্স এবং আপনার দূরবর্তী বিজ্ঞপ্তিগুলির সামগ্রী স্থানীয়করণ দেখুন।

টেবিল 2 খ. অ্যান্ড্রয়েড — বিজ্ঞপ্তি বার্তাগুলির জন্য কী

প্যারামিটার ব্যবহার বর্ণনা
title ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির শিরোনাম।

body ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির মূল অংশের পাঠ্য।

android_channel_id ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির চ্যানেল আইডি (Android O তে নতুন)।

এই চ্যানেল আইডি সহ কোনও বিজ্ঞপ্তি পাওয়ার আগে অ্যাপটিকে অবশ্যই এই চ্যানেল আইডি সহ একটি চ্যানেল তৈরি করতে হবে।

আপনি অনুরোধে এই চ্যানেল আইডি না পাঠালে বা প্রদত্ত চ্যানেল আইডিটি এখনও অ্যাপ তৈরি না করে থাকলে, FCM অ্যাপ ম্যানিফেস্টে উল্লেখ করা চ্যানেল আইডি ব্যবহার করে।

icon ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির আইকন।

অঙ্কনযোগ্য রিসোর্স myicon জন্য বিজ্ঞপ্তি আইকনটিকে myicon সেট করে। আপনি অনুরোধে এই কী না পাঠালে, FCM আপনার অ্যাপ ম্যানিফেস্টে নির্দিষ্ট করা লঞ্চার আইকন প্রদর্শন করে।

sound ঐচ্ছিক, স্ট্রিং

ডিভাইসটি নোটিফিকেশন পাওয়ার সময় বাজানোর শব্দ।

"default" বা অ্যাপে বান্ডিল করা সাউন্ড রিসোর্সের ফাইলের নাম সমর্থন করে। সাউন্ড ফাইল অবশ্যই /res/raw/ তে থাকবে।

tag ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তি ড্রয়ারে বিদ্যমান বিজ্ঞপ্তিগুলি প্রতিস্থাপন করতে ব্যবহৃত সনাক্তকারী৷

নির্দিষ্ট না থাকলে, প্রতিটি অনুরোধ একটি নতুন বিজ্ঞপ্তি তৈরি করে।

যদি নির্দিষ্ট করা থাকে এবং একই ট্যাগ সহ একটি বিজ্ঞপ্তি ইতিমধ্যেই দেখানো হচ্ছে, নতুন বিজ্ঞপ্তিটি বিজ্ঞপ্তি ড্রয়ারে বিদ্যমান একটিকে প্রতিস্থাপন করে।

color ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির আইকনের রঙ, #rrggbb ফর্ম্যাটে প্রকাশ করা হয়েছে।

click_action ঐচ্ছিক, স্ট্রিং

ব্যবহারকারীর সাথে যুক্ত কর্ম বিজ্ঞপ্তিতে ক্লিক করুন।

নির্দিষ্ট করা থাকলে, ব্যবহারকারী যখন বিজ্ঞপ্তিতে ক্লিক করেন তখন একটি ম্যাচিং ইনটেন্ট ফিল্টার সহ একটি কার্যকলাপ চালু হয়।

body_loc_key ঐচ্ছিক, স্ট্রিং

ব্যবহারকারীর বর্তমান স্থানীয়করণে বডি টেক্সট স্থানীয়করণ করতে ব্যবহার করার জন্য অ্যাপের স্ট্রিং সংস্থানগুলিতে বডি স্ট্রিংয়ের কী।

আরও তথ্যের জন্য স্ট্রিং সম্পদ দেখুন।

body_loc_args ঐচ্ছিক, স্ট্রিং হিসাবে JSON অ্যারে

ব্যবহারকারীর বর্তমান স্থানীয়করণে বডি টেক্সট স্থানীয়করণ করতে ব্যবহার করার জন্য body_loc_key এ বিন্যাস নির্দিষ্টকরণের জায়গায় ব্যবহার করা পরিবর্তনশীল স্ট্রিং মান।

আরও তথ্যের জন্য বিন্যাস এবং স্টাইলিং দেখুন।

title_loc_key ঐচ্ছিক, স্ট্রিং

ব্যবহারকারীর বর্তমান স্থানীয়করণে শিরোনাম পাঠ্যকে স্থানীয়করণ করতে ব্যবহার করার জন্য অ্যাপের স্ট্রিং সংস্থানগুলিতে শিরোনাম স্ট্রিংয়ের কী।

আরও তথ্যের জন্য স্ট্রিং সম্পদ দেখুন।

title_loc_args ঐচ্ছিক, স্ট্রিং হিসাবে JSON অ্যারে

শিরোনাম পাঠ্যকে ব্যবহারকারীর বর্তমান স্থানীয়করণে স্থানীয়করণ করতে ব্যবহার করতে title_loc_key এ বিন্যাস নির্দিষ্টকরণের জায়গায় ব্যবহার করা পরিবর্তনশীল স্ট্রিং মান।

আরও তথ্যের জন্য বিন্যাস এবং স্টাইলিং দেখুন।

টেবিল 2c. ওয়েব (জাভাস্ক্রিপ্ট) — বিজ্ঞপ্তি বার্তাগুলির জন্য কী

প্যারামিটার ব্যবহার বর্ণনা
title ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির শিরোনাম।

body ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির মূল অংশের পাঠ্য।

icon ঐচ্ছিক, স্ট্রিং

বিজ্ঞপ্তির আইকনের জন্য ব্যবহার করার জন্য URL।

click_action ঐচ্ছিক, স্ট্রিং

ব্যবহারকারীর সাথে যুক্ত কর্ম বিজ্ঞপ্তিতে ক্লিক করুন।

সমস্ত URL মানগুলির জন্য, HTTPS প্রয়োজন৷

একটি ডাউনস্ট্রিম XMPP বার্তার প্রতিক্রিয়া ব্যাখ্যা করুন

নিচের সারণীটি ক্ষেত্রগুলির তালিকা করে যা একটি ডাউনস্ট্রিম XMPP বার্তা প্রতিক্রিয়াতে প্রদর্শিত হয়।

সারণি 3 ডাউনস্ট্রিম বার্তা XMPP প্রতিক্রিয়া বডি।

প্যারামিটার ব্যবহার বর্ণনা
from প্রয়োজনীয়, স্ট্রিং

এই প্যারামিটারটি নির্দিষ্ট করে কে এই প্রতিক্রিয়াটি পাঠিয়েছে৷

মান হল ক্লায়েন্ট অ্যাপের রেজিস্ট্রেশন টোকেন।

message_id প্রয়োজনীয়, স্ট্রিং এই প্যারামিটারটি অনন্যভাবে একটি XMPP সংযোগে একটি বার্তা সনাক্ত করে। মানটি একটি স্ট্রিং যা সংশ্লিষ্ট বার্তাটিকে অনন্যভাবে সনাক্ত করে।
message_type প্রয়োজনীয়, স্ট্রিং

এই প্যারামিটারটি FCM থেকে অ্যাপ সার্ভারে একটি ack বা nack বার্তা নির্দিষ্ট করে।

যদি মানটি nack এ সেট করা থাকে, তাহলে ব্যর্থতার তথ্য পেতে অ্যাপ সার্ভারের error এবং error_description দেখতে হবে।

error ঐচ্ছিক, স্ট্রিং এই প্যারামিটারটি ডাউনস্ট্রিম বার্তা সম্পর্কিত একটি ত্রুটি নির্দিষ্ট করে। এটি সেট করা হয় যখন message_type nack হয়। বিস্তারিত জানার জন্য টেবিল 4 দেখুন।
error_description ঐচ্ছিক, স্ট্রিং এই প্যারামিটার ত্রুটির জন্য বর্ণনামূলক তথ্য প্রদান করে। এটি সেট করা হয় যখন message_type nack হয়।

ডাউনস্ট্রিম বার্তা ত্রুটি প্রতিক্রিয়া কোড

নিচের সারণীটি ডাউনস্ট্রিম বার্তাগুলির জন্য ত্রুটি প্রতিক্রিয়া কোডগুলি তালিকাভুক্ত করে৷

সারণি 4 ডাউনস্ট্রিম বার্তা ত্রুটি প্রতিক্রিয়া কোড.

ত্রুটি XMPP কোড সুপারিশকৃত পদক্ষেপ
অনুপস্থিত নিবন্ধন টোকেন INVALID_JSON অনুরোধে একটি রেজিস্ট্রেশন টোকেন আছে কিনা পরীক্ষা করুন (একটি প্লেইন টেক্সট মেসেজে registration_id বা JSON-এ to বা registration_ids ক্ষেত্রে)।
অবৈধ APN নিবন্ধন INVALID_JSON iOS রেজিস্ট্রেশনের জন্য, ক্লায়েন্টের রেজিস্ট্রেশনের অনুরোধে একটি বৈধ APN টোকেন এবং অ্যাপ্লিকেশন আইডি আছে কিনা পরীক্ষা করুন।
অবৈধ রেজিস্ট্রেশন টোকেন BAD_REGISTRATION আপনি সার্ভারে যে নিবন্ধন টোকেন পাস করেন তার বিন্যাস পরীক্ষা করুন। নিশ্চিত করুন যে এটি FCM এর সাথে নিবন্ধন করার সময় ক্লায়েন্ট অ্যাপটি প্রাপ্ত নিবন্ধন টোকেনের সাথে মেলে৷ ছোট করবেন না বা অতিরিক্ত অক্ষর যোগ করবেন না।
অনিবন্ধিত ডিভাইস DEVICE_UNREGISTERED একটি বিদ্যমান নিবন্ধন টোকেন বিভিন্ন পরিস্থিতিতে বৈধ না হতে পারে, যার মধ্যে রয়েছে:
  • যদি ক্লায়েন্ট অ্যাপটি FCM সাথে নিবন্ধনমুক্ত হয়।
  • যদি ক্লায়েন্ট অ্যাপটি স্বয়ংক্রিয়ভাবে অনিবন্ধিত হয়, যা ঘটতে পারে যদি ব্যবহারকারী অ্যাপ্লিকেশনটি আনইনস্টল করে। উদাহরণস্বরূপ, iOS-এ, যদি APNs APNs টোকেনটিকে অবৈধ বলে রিপোর্ট করে।
  • যদি রেজিস্ট্রেশন টোকেনের মেয়াদ শেষ হয়ে যায় (উদাহরণস্বরূপ, Google রেজিস্ট্রেশন টোকেন রিফ্রেশ করার সিদ্ধান্ত নিতে পারে বা ডিভাইসের জন্য APN টোকেনের মেয়াদ শেষ হয়ে গেছে)।
  • যদি ক্লায়েন্ট অ্যাপটি আপডেট করা হয় তবে নতুন সংস্করণটি বার্তা গ্রহণের জন্য কনফিগার করা হয়নি।
এই সমস্ত ক্ষেত্রে, অ্যাপ সার্ভার থেকে এই নিবন্ধন টোকেনটি সরান এবং বার্তা পাঠানোর জন্য এটি ব্যবহার করা বন্ধ করুন৷
মেলেনি প্রেরক SENDER_ID_MISMATCH একটি নিবন্ধন টোকেন প্রেরকদের একটি নির্দিষ্ট গোষ্ঠীর সাথে আবদ্ধ। যখন একটি ক্লায়েন্ট অ্যাপ FCM জন্য নিবন্ধন করে, তখন এটি অবশ্যই উল্লেখ করবে যে কোন প্রেরকদের বার্তা পাঠানোর অনুমতি দেওয়া হয়েছে। ক্লায়েন্ট অ্যাপে বার্তা পাঠানোর সময় আপনার সেই প্রেরক আইডিগুলির মধ্যে একটি ব্যবহার করা উচিত। আপনি যদি অন্য প্রেরকের কাছে যান, বিদ্যমান নিবন্ধন টোকেনগুলি কাজ করবে না৷
অবৈধ JSON INVALID_JSON JSON বার্তাটি সঠিকভাবে ফরম্যাট করা হয়েছে এবং বৈধ ক্ষেত্র রয়েছে তা পরীক্ষা করুন (উদাহরণস্বরূপ, সঠিক ডেটা টাইপ পাস করা হয়েছে তা নিশ্চিত করুন)।
বার্তা খুব বড় INVALID_JSON একটি বার্তায় অন্তর্ভুক্ত পেলোড ডেটার মোট আকার FCM সীমা অতিক্রম করে না তা পরীক্ষা করুন: বেশিরভাগ বার্তার জন্য 4096 বাইট বা বিষয়গুলিতে বার্তাগুলির ক্ষেত্রে 2048 বাইট৷ এটি কী এবং মান উভয়ই অন্তর্ভুক্ত করে।
অবৈধ ডেটা কী INVALID_JSON পরীক্ষা করুন যে পেলোড ডেটাতে একটি কী (যেমন from , gcm , বা google দ্বারা প্রিফিক্স করা কোনো মান) নেই যা FCM দ্বারা অভ্যন্তরীণভাবে ব্যবহৃত হয়। মনে রাখবেন যে কিছু শব্দ (যেমন collapse_key ) FCM দ্বারাও ব্যবহৃত হয় কিন্তু পেলোডে অনুমোদিত হয়, এই ক্ষেত্রে পেলোড মান FCM মান দ্বারা ওভাররাইড করা হয়।
বেঁচে থাকার জন্য অবৈধ সময় INVALID_JSON পরীক্ষা করুন যে time_to_live এ ব্যবহৃত মানটি 0 এবং 2,419,200 (4 সপ্তাহ) এর মধ্যে সেকেন্ডে একটি পূর্ণসংখ্যা উপস্থাপন করে।
খারাপ ACK বার্তা BAD_ACK পুনরায় চেষ্টা করার আগে ack বার্তাটি সঠিকভাবে ফরম্যাট হয়েছে কিনা তা পরীক্ষা করুন। বিস্তারিত জানার জন্য টেবিল 6 দেখুন।
টাইমআউট SERVICE_UNAVAILABLE

সার্ভার সময়মত অনুরোধ প্রক্রিয়া করতে পারেনি. একই অনুরোধ পুনরায় চেষ্টা করুন, কিন্তু আপনি অবশ্যই:

  • আপনার পুনরায় চেষ্টা করার পদ্ধতিতে সূচকীয় ব্যাকঅফ প্রয়োগ করুন। (যেমন আপনি যদি প্রথম পুনঃপ্রচেষ্টার আগে এক সেকেন্ড অপেক্ষা করেন, তাহলে পরেরটির আগে কমপক্ষে দুই সেকেন্ড অপেক্ষা করুন, তারপরে চার সেকেন্ড, ইত্যাদি)। আপনি যদি একাধিক বার্তা পাঠান, একই সময়ে সমস্ত বার্তার জন্য একটি নতুন অনুরোধ জারি করা এড়াতে প্রতিটিকে একটি অতিরিক্ত র্যান্ডম পরিমাণে স্বাধীনভাবে বিলম্বিত করুন।
  • প্রাথমিক পুনঃপ্রচেষ্টা বিলম্ব এক সেকেন্ডে সেট করা উচিত।

দ্রষ্টব্য: সমস্যা সৃষ্টিকারী প্রেরকদের কালো তালিকাভুক্ত হওয়ার ঝুঁকি রয়েছে।

অভ্যন্তরীণ সার্ভার ত্রুটি৷ INTERNAL_SERVER_
ERROR
অনুরোধটি প্রক্রিয়া করার চেষ্টা করার সময় সার্ভার একটি ত্রুটির সম্মুখীন হয়েছে৷ আপনি "টাইমআউট" এ তালিকাভুক্ত প্রয়োজনীয়তা অনুসরণ করে একই অনুরোধ পুনরায় চেষ্টা করতে পারেন (উপরের সারি দেখুন)।
ডিভাইস বার্তা হার অতিক্রম DEVICE_MESSAGE_RATE
_EXCEEDED
একটি নির্দিষ্ট ডিভাইসে বার্তার হার খুব বেশি। এই ডিভাইসে পাঠানো বার্তার সংখ্যা কমিয়ে দিন এবং অবিলম্বে এই ডিভাইসে পাঠানোর চেষ্টা করবেন না।
বিষয় বার্তা হার অতিক্রম TOPICS_MESSAGE_RATE
_EXCEEDED
একটি নির্দিষ্ট বিষয়ে গ্রাহকদের বার্তার হার খুব বেশি। এই বিষয়ের জন্য প্রেরিত বার্তার সংখ্যা হ্রাস করুন, এবং অবিলম্বে পুনরায় পাঠানোর চেষ্টা করবেন না।
সংযোগ নিষ্কাশন CONNECTION_DRAINING সংযোগটি বন্ধ হয়ে যাওয়ার কারণে বার্তাটি প্রক্রিয়া করা যায়নি৷ এটি ঘটে কারণ, পর্যায়ক্রমে, লোড ব্যালেন্সিং সঞ্চালনের জন্য FCM একটি সংযোগ বন্ধ করতে হবে। অন্য XMPP সংযোগের মাধ্যমে বার্তাটি পুনরায় চেষ্টা করুন।
অবৈধ APN শংসাপত্র INVALID_APNS_CREDENTIAL একটি iOS ডিভাইসে লক্ষ্য করা একটি বার্তা পাঠানো যায়নি কারণ প্রয়োজনীয় APN-এর প্রমাণীকরণ কী আপলোড করা হয়নি বা মেয়াদ শেষ হয়ে গেছে। আপনার উন্নয়ন এবং উত্পাদন শংসাপত্রের বৈধতা পরীক্ষা করুন.
প্রমাণীকরণ ব্যর্থ হয়েছে৷ AUTHENTICATION_FAILED বাহ্যিক পুশ পরিষেবাগুলির সাথে প্রমাণীকরণ করতে ব্যর্থ হয়েছে৷ আপনি সঠিক ওয়েব পুশ সার্টিফিকেট ব্যবহার করছেন কিনা তা পরীক্ষা করুন।

আপস্ট্রিম বার্তা সিনট্যাক্স

একটি আপস্ট্রিম বার্তা হল একটি বার্তা যা ক্লায়েন্ট অ্যাপ অ্যাপ সার্ভারে পাঠায়। বর্তমানে শুধুমাত্র XMPP আপস্ট্রিম মেসেজিং সমর্থন করে। ক্লায়েন্ট অ্যাপ থেকে বার্তা পাঠানোর বিষয়ে আরও তথ্যের জন্য আপনার প্ল্যাটফর্মের ডকুমেন্টেশন দেখুন।

একটি আপস্ট্রিম XMPP বার্তা ব্যাখ্যা করা

ক্লায়েন্ট অ্যাপস থেকে আপস্ট্রিম মেসেজ অনুরোধের জবাবে FCM দ্বারা জেনারেট করা XMPP স্তবকের ক্ষেত্রগুলিকে নিম্নলিখিত সারণীতে বর্ণনা করা হয়েছে।

সারণি 5 আপস্ট্রিম XMPP বার্তা।

প্যারামিটার ব্যবহার বর্ণনা
from প্রয়োজনীয়, স্ট্রিং

এই প্যারামিটারটি কে বার্তা পাঠিয়েছে তা নির্দিষ্ট করে।

মান হল ক্লায়েন্ট অ্যাপের রেজিস্ট্রেশন টোকেন।

category প্রয়োজনীয়, স্ট্রিং এই প্যারামিটারটি ক্লায়েন্ট অ্যাপের অ্যাপ্লিকেশন প্যাকেজের নাম নির্দিষ্ট করে যা বার্তা পাঠিয়েছে।
message_id প্রয়োজনীয়, স্ট্রিং এই প্যারামিটারটি বার্তাটির অনন্য আইডি নির্দিষ্ট করে।
data ঐচ্ছিক, স্ট্রিং এই প্যারামিটারটি বার্তার পেলোডের কী-মান জোড়া নির্দিষ্ট করে।

একটি ACK বার্তা পাঠানো হচ্ছে

নিম্নলিখিত সারণী ACK প্রতিক্রিয়া বর্ণনা করে যা অ্যাপ সার্ভার প্রাপ্ত একটি আপস্ট্রিম বার্তার প্রতিক্রিয়া হিসাবে অ্যাপ সার্ভার FCM এ প্রেরণ করবে বলে আশা করা হচ্ছে।

সারণি 6 আপস্ট্রিম XMPP বার্তার প্রতিক্রিয়া।

প্যারামিটার ব্যবহার বর্ণনা
to প্রয়োজনীয়, স্ট্রিং

এই পরামিতি একটি প্রতিক্রিয়া বার্তা প্রাপক নির্দিষ্ট করে.

মানটি অবশ্যই ক্লায়েন্ট অ্যাপের একটি নিবন্ধন টোকেন হতে হবে যা আপস্ট্রিম বার্তাটি পাঠিয়েছে।

message_id প্রয়োজনীয়, স্ট্রিং এই প্যারামিটারটি নির্দিষ্ট করে যে প্রতিক্রিয়াটি কোন বার্তার উদ্দেশ্যে। মানটি অবশ্যই সংশ্লিষ্ট আপস্ট্রিম বার্তা থেকে message_id মান হতে হবে।
message_type প্রয়োজনীয়, স্ট্রিং এই প্যারামিটারটি একটি অ্যাপ সার্ভার থেকে CCS-এ একটি ack বার্তা নির্দিষ্ট করে। আপস্ট্রিম বার্তাগুলির জন্য, এটি সর্বদা ack এ সেট করা উচিত।

FCM সার্ভার বার্তা (XMPP)

এটি একটি অ্যাপ সার্ভারে FCM থেকে পাঠানো একটি বার্তা৷ এখানে FCM অ্যাপ সার্ভারে প্রাথমিক ধরনের বার্তা পাঠায়:

  • নিয়ন্ত্রণ: এই সিসিএস-উত্পন্ন বার্তাগুলি নির্দেশ করে যে অ্যাপ সার্ভার থেকে অ্যাকশন প্রয়োজন।

নিম্নলিখিত সারণীটি বার্তাগুলির অন্তর্ভুক্ত ক্ষেত্রগুলিকে বর্ণনা করে যা CCS একটি অ্যাপ সার্ভারে পাঠায়৷

সারণি 7 FCM নিয়ন্ত্রণ বার্তা (XMPP)।

প্যারামিটার ব্যবহার বর্ণনা
সাধারণ ক্ষেত্র
message_type প্রয়োজনীয়, স্ট্রিং

এই প্যারামিটারটি বার্তার ধরন নির্দিষ্ট করে: নিয়ন্ত্রণ।

যখন এটি control সেট করা হয়, তখন বার্তাটিতে নিয়ন্ত্রণ বার্তার ধরন নির্দেশ করতে control_type অন্তর্ভুক্ত থাকে।

control_type ঐচ্ছিক, স্ট্রিং

এই প্যারামিটারটি FCM থেকে প্রেরিত নিয়ন্ত্রণ বার্তার ধরন নির্দিষ্ট করে।

বর্তমানে, শুধুমাত্র CONNECTION_DRAINING সমর্থিত। লোড ব্যালেন্সিং সঞ্চালনের জন্য একটি সংযোগ বন্ধ করার আগে FCM এই নিয়ন্ত্রণ বার্তাটি পাঠায়। সংযোগ নিষ্কাশনের সাথে সাথে সংযোগে আর কোন বার্তা পাঠানোর অনুমতি নেই, তবে পাইপলাইনে বিদ্যমান বার্তাগুলি প্রক্রিয়া করা অব্যাহত রয়েছে।