1. ভূমিকা
লক্ষ্য
এই কোডল্যাবে আপনি শিখবেন কিভাবে আপনার মাল্টি-প্ল্যাটফর্ম অ্যাপটি ইন্সট্রুমেন্ট করবেন যাতে আপনি FCM টপিক ব্যবহার করে আপনার অ্যাপের বিভিন্ন সাবগ্রুপে পুশ মেসেজ মাল্টিকাস্ট করতে পারেন।
একবার সম্পন্ন হলে, আপনি এই উপগোষ্ঠীগুলির পাশাপাশি উপগোষ্ঠীগুলির উপর মাল্টিকাস্ট পুশ বার্তাগুলি পরিচালনা করার জন্য FCM পরিকাঠামো ব্যবহার করতে সক্ষম হবেন।
বিষয়গুলির সারসংক্ষেপ
টপিক হল FCM অবকাঠামো সমর্থিত একটি উপায় যা আপনার অ্যাপের ইনস্ট্যান্সের সাবগ্রুপগুলিতে বার্তা সহ পৌঁছায়।
FCM এই বিষয়গুলিতে বার্তা পাঠানোর পাশাপাশি সাবস্ক্রিপশন বজায় রাখার জন্য API প্রদান করে। একটি অ্যাপ ইনস্ট্যান্সকে টপিকের সাথে সংযুক্ত এবং বিচ্ছিন্ন করার কাজকে যথাক্রমে সাবস্ক্রাইব এবং আনসাবস্ক্রাইব বলা হয়।
সর্বজনীনভাবে উপলব্ধ কন্টেন্টের জন্য বিষয়গুলি ব্যবহার করা উচিত। উদাহরণস্বরূপ, আবহাওয়ার আপডেট সম্পর্কে বার্তা। আপনি যদি ব্যবহারকারী-সংবেদনশীল বার্তা পাঠাতে চান, তাহলে একাধিক ডিভাইসে বার্তা মাল্টিকাস্ট করার জন্য Firebase Admin SDK ব্যবহার করুন।
থ্রুপুটের জন্য বিষয়-ভিত্তিক মাল্টিকাস্টিং অপ্টিমাইজ করা হয়েছে।
তুমি কি শিখবে
- মোবাইল অ্যাপ থেকে ব্যবহারকারীদের বিষয়গুলিতে কীভাবে সাবস্ক্রাইব (এবং আনসাবস্ক্রাইব) করবেন।
- বিষয় ব্যবহার করে মাল্টিকাস্ট পুশ বার্তা কীভাবে পাঠাবেন।
- বিষয়ের শর্তাবলী ব্যবহার করে বিষয়ের সংমিশ্রণে কীভাবে বার্তা পাঠাবেন।
- সার্ভার সাইডে টপিক সাবস্ক্রিপশন কীভাবে পরিচালনা করবেন এবং বাল্ক সাবস্ক্রিপশন এবং আনসাবস্ক্রিপশন করবেন।
তুমি কী তৈরি করবে
- একটি অ্যান্ড্রয়েড অ্যাপ যা বিষয়গুলিতে সাবস্ক্রাইব/আনসাবস্ক্রাইব করে এবং বিষয়গুলিতে পাঠানো হলে বার্তা গ্রহণ করে।
- Firebase Admin SDK ব্যবহার করে একটি সার্ভার সাইড ইন্টিগ্রেশন, যা FCM API-এর মাধ্যমে বিষয় বার্তা পাঠাতে ব্যবহৃত হবে।
তোমার যা লাগবে
- আপনার পছন্দের একটি ব্রাউজার, যেমন Chrome।
- জাভা অ্যাপ্লিকেশন তৈরির জন্য IntelliJ IDEA IDE।
- ইনস্টল করার সময় Gradle-এর জন্য সমর্থন অপ্ট-ইন করতে ভুলবেন না।
- অ্যান্ড্রয়েড অ্যাপ্লিকেশন তৈরির জন্য অ্যান্ড্রয়েড স্টুডিও আইডিই।
- অ্যান্ড্রয়েড অ্যাপ্লিকেশন চালানোর জন্য একটি ডিভাইস। এর মধ্যে যেকোনো একটি:
- অ্যান্ড্রয়েড এমুলেটর। ( অ্যান্ড্রয়েড স্টুডিওতে সেটআপ প্রয়োজন)।
- আপনার কম্পিউটারের সাথে সংযুক্ত একটি বাস্তব অ্যান্ড্রয়েড ডিভাইস এবং ডেভেলপার মোডে সেট করা আছে।
- আপনার Firebase প্রকল্প তৈরি এবং পরিচালনা করার জন্য একটি Google অ্যাকাউন্ট।
2. সেট আপ করা
কোডটি পান
কমান্ড লাইন থেকে GitHub রিপোজিটরি ক্লোন করুন:
git clone https://github.com/firebase/quickstart-android.git fcm-codelab
নমুনা কোডটি fcm-codelab ডিরেক্টরিতে ক্লোন করা হবে।
cd fcm-codelab
এই কোডল্যাবের জন্য স্টার্টার অ্যাপটি fcm-topics-codelab শাখার messaging ডিরেক্টরিতে রয়েছে। স্টার্টার কোডে পৌঁছানোর জন্য নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন। এতে StockNewsApp এবং StockNewsServer দুটি ডিরেক্টরি রয়েছে। প্রথমটিতে স্টার্টার অ্যান্ড্রয়েড অ্যাপ রয়েছে এবং দ্বিতীয়টিতে স্টার্টার সার্ভার সাইড কোড রয়েছে।
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
এই কোডল্যাবের সম্পূর্ণ সংস্করণটি messaging/fcm-topics-codelab/completed ডিরেক্টরিতে রাখা হয়েছে।
একটি ফায়ারবেস প্রকল্প তৈরি করুন
- আপনার গুগল অ্যাকাউন্ট ব্যবহার করে ফায়ারবেস কনসোলে সাইন ইন করুন।
- একটি নতুন প্রকল্প তৈরি করতে বোতামটি ক্লিক করুন, এবং তারপর একটি প্রকল্পের নাম লিখুন (উদাহরণস্বরূপ,
StockNews)। - চালিয়ে যান ক্লিক করুন।
- যদি অনুরোধ করা হয়, তাহলে Firebase শর্তাবলী পর্যালোচনা করুন এবং গ্রহণ করুন, এবং তারপর Continue এ ক্লিক করুন।
- (ঐচ্ছিক) Firebase কনসোলে ("Gemini in Firebase" নামে পরিচিত) AI সহায়তা সক্ষম করুন।
- এই কোডল্যাবের জন্য, আপনার গুগল অ্যানালিটিক্সের প্রয়োজন নেই , তাই গুগল অ্যানালিটিক্স বিকল্পটি টগল করে বন্ধ করে দিন ।
- Create project এ ক্লিক করুন, আপনার province করার জন্য অপেক্ষা করুন, এবং তারপর Continue এ ক্লিক করুন।
অভিনন্দন! আপনি সবেমাত্র আপনার Firebase প্রকল্প তৈরি করেছেন।
৩. প্ল্যাটফর্ম-নির্দিষ্ট ফায়ারবেস অ্যাপ কনফিগারেশন
Firebase সাপোর্ট সক্ষম করার জন্য প্রয়োজনীয় বেশিরভাগ কোড পরিবর্তন ইতিমধ্যেই আপনার কাজ করা প্রকল্পে চেক করা হয়েছে। তবে, মোবাইল প্ল্যাটফর্মের জন্য সাপোর্ট যোগ করার জন্য, আপনাকে যা করতে হবে:
- Firebase প্রকল্পে পছন্দসই প্ল্যাটফর্মটি নিবন্ধন করুন
- প্ল্যাটফর্ম-নির্দিষ্ট কনফিগারেশন ফাইলটি ডাউনলোড করুন এবং কোডে এটি যুক্ত করুন।
এই কোডল্যাবের উদ্দেশ্যে, আমরা একটি অ্যান্ড্রয়েড ফায়ারবেস অ্যাপ যুক্ত করতে যাচ্ছি।
অ্যান্ড্রয়েড কনফিগার করুন
- Firebase Console- এ, Settings cog-এর বাম নেভিগেশন বারের উপরে Project Settings নির্বাচন করুন এবং General পৃষ্ঠায় Your apps-এর অধীনে Android আইকনে ক্লিক করুন।
আপনার নিম্নলিখিত ডায়ালগটি দেখতে হবে: 
- গুরুত্বপূর্ণ মান হল অ্যান্ড্রয়েড প্যাকেজের নাম । এটি
com.ticker.stocknewsএ সেট করুন।- এখানে প্রদত্ত প্যাকেজের নাম অবশ্যই আপনার StockNewsApp কোডের
AndroidManifest.xmlএ প্রদত্ত প্যাকেজের নাম হতে হবে। আপনি যদি এটি সনাক্ত করতে বা পরিবর্তন করতে চান, তাহলে এই পদক্ষেপগুলি অনুসরণ করুন:- StockNewsApp ডিরেক্টরিতে,
app/src/main/AndroidManifest.xmlফাইলটি খুলুন। -
manifestএলিমেন্টে,packageঅ্যাট্রিবিউটের স্ট্রিং মান খুঁজুন। এই মানটি হল অ্যান্ড্রয়েড প্যাকেজের নাম।
- StockNewsApp ডিরেক্টরিতে,
- এখানে প্রদত্ত প্যাকেজের নাম অবশ্যই আপনার StockNewsApp কোডের
- ফায়ারবেস ডায়ালগে, কপি করা প্যাকেজের নামটি অ্যান্ড্রয়েড প্যাকেজের নাম ক্ষেত্রে পেস্ট করুন।
- এই কোডল্যাবের জন্য আপনার ডিবাগ সাইনিং সার্টিফিকেট SHA-1 এর প্রয়োজন নেই, কারণ এই অ্যাপটি প্রকাশ করা হবে না। এটি খালি রাখুন।
- অ্যাপ নিবন্ধন করুন এ ক্লিক করুন।
- Firebase কনসোলে চালিয়ে যান,
google-services.jsonকনফিগারেশন ফাইলটি ডাউনলোড করার জন্য নির্দেশাবলী অনুসরণ করুন। - আপনি বাকি সেটআপ ধাপগুলি এড়িয়ে যেতে পারেন, কারণ বাকি সবকিছু ইতিমধ্যেই স্টার্টার অ্যাপ কোডে কনফিগার করা আছে। আপনি আপনার অ্যাপটি Firebase Console এর প্রধান পৃষ্ঠায় তালিকাভুক্ত পাবেন।
-
google-services.jsonফাইলটি (যেটি আপনি সবেমাত্র ডাউনলোড করেছেন)messaging/fcm-topics-codelab/starter/StockNewsApp/appডিরেক্টরিতে কপি করুন।
৪. আপনার অ্যাপ তৈরি করুন এবং চালান
তুমি তোমার অ্যাপে কাজ শুরু করার জন্য প্রস্তুত! প্রথমে, অ্যাপটি তৈরি করে চালাও।
স্টার্টার অ্যাপটি আমদানি করুন
অ্যান্ড্রয়েড স্টুডিও শুরু করুন, এবং স্টার্টার কোড ডিরেক্টরি থেকে messaging/fcm-topics-codelab/starter/StockNewsApp আমদানি করুন।
প্রজেক্টটি লোড হওয়ার পরে, আপনি একটি সতর্কতাও দেখতে পাবেন যে Git আপনার সমস্ত স্থানীয় পরিবর্তনগুলি ট্র্যাক করছে না, আপনি " Ignore " অথবা উপরের ডানদিকে " X " ক্লিক করতে পারেন। (আপনি কোনও পরিবর্তন Git রেপোতে ফিরিয়ে আনবেন না।)
প্রজেক্ট উইন্ডোর উপরের বাম কোণে, যদি আপনি অ্যান্ড্রয়েড ভিউতে থাকেন তবে নীচের ছবির মতো কিছু দেখতে পাবেন। (যদি আপনি প্রজেক্ট ভিউতে থাকেন, তাহলে একই জিনিস দেখতে আপনাকে প্রজেক্টটি প্রসারিত করতে হবে)

অনুগ্রহ করে মনে রাখবেন যে অ্যান্ড্রয়েড স্টুডিও প্রথমবারের মতো ব্যাকগ্রাউন্ডে প্রোজেক্টটি কম্পাইল করতে কয়েক সেকেন্ড সময় নিতে পারে। এই সময়ের মধ্যে আপনি অ্যান্ড্রয়েড স্টুডিওর নীচে স্ট্যাটাস বারে একটি স্পিনার দেখতে পাবেন:

আমরা আপনাকে কোড পরিবর্তন করার আগে এটি শেষ না হওয়া পর্যন্ত অপেক্ষা করার পরামর্শ দিচ্ছি। এটি অ্যান্ড্রয়েড স্টুডিওকে সমস্ত প্রয়োজনীয় উপাদানগুলি টেনে আনতে অনুমতি দেবে।
এছাড়াও, যদি আপনি "ভাষা পরিবর্তনগুলি কার্যকর হওয়ার জন্য পুনরায় লোড করুন?" বা অনুরূপ কিছু বলার প্রম্পট পান, তাহলে "হ্যাঁ" নির্বাচন করুন।
এমুলেটর সেটআপ
যদি আপনার অ্যান্ড্রয়েড এমুলেটর সেট আপ করতে সাহায্যের প্রয়োজন হয়, তাহলে "আপনার অ্যাপ চালান" নিবন্ধটি পড়ুন।
অ্যান্ড্রয়েড অ্যাপ স্টার্টার কোডটি বুঝুন
- স্টার্টার কোডটি একটি হালকা ওজনের অ্যান্ড্রয়েড অ্যাপ যার কার্যকারিতা এবং UI ন্যূনতম।
-
app/build.gradleফাইলে ইতিমধ্যেই firebase-messaging SDK- এর উপর নির্ভরতা যোগ করা হয়েছে।

-
AndroidManifest.xmlতে, একটিMESSAGING_EVENTকলব্যাক হ্যান্ডলার ইতিমধ্যেই যোগ করা হয়েছে।- এই হ্যান্ডলার,
StockNewsMessagingService.javaFirebaseMessagingServiceক্লাসটি প্রসারিত করে যা বিভিন্ন Firebase ক্লাউড মেসেজিং সম্পর্কিত কার্যকারিতা প্রদান করে। আরও জানতে FirebaseMessagingService ডকুমেন্টেশন দেখুন।

- FCM রেজিস্ট্রেশন টোকেন তৈরি বা রিফ্রেশ করা হলে
onNewTokenফাংশনটি কল করা হয়। আরও তথ্যের জন্য মনিটর টোকেন জেনারেশন দেখুন। - যখন কোনও বার্তা আসে এবং অ্যাপটি ফোরগ্রাউন্ডে থাকে তখন
onMessageReceivedফাংশনটি কল করা হয়। বর্তমানে, এটি কেবল প্রাপ্ত বার্তাটি লগ করে।- ব্যাকগ্রাউন্ড এবং ফোরগ্রাউন্ড মেসেজ ডেলিভারি এবং হ্যান্ডলিং এর মধ্যে পার্থক্য সম্পর্কে আরও জানতে অ্যান্ড্রয়েড অ্যাপে মেসেজ রিসিভ করুন দেখুন।
- এই হ্যান্ডলার,
- এছাড়াও,
AndroidManifest.xmlতে,StockNewsApplicationনামে একটি AndroidApplicationক্লাসও প্রদান করা হয়।

- অ্যাপটি শুরু হওয়ার সাথে সাথে এই ক্লাসটিই প্রথম ইনস্ট্যান্টিয়েটেড হবে।
-
StockNewsApplicationক্লাসেরonCreateফাংশনে, একটি FCM রেজিস্ট্রেশন টোকেন তৈরির কল যোগ করা হয়। এটি একটি বৈধ FCM রেজিস্ট্রেশন টোকেন তৈরি করবে এবং এটি লগ করবে।
-
MainActivity.javaRecyclerViewযোগ করে যা স্টক ক্যাটাগরির পছন্দগুলি প্রদর্শন করে। -
SubscriptionAdapter.javaRecyclerView.Adapterপ্রয়োগ করে যা স্টক ক্যাটাগরি নির্বাচনের স্ক্রিন আঁকে।- প্রতিটি স্টক বিভাগের একটি নাম এবং তার পাশে একটি সাবস্ক্রিপশন টগল থাকে।
- টগল পরিবর্তন করলে FCM টপিক সাবস্ক্রিপশন/আনসাবস্ক্রিপশন কল করা উচিত।
- আপনি আসন্ন বিভাগগুলিতে এই আহ্বানগুলি বাস্তবায়ন করবেন।
-
model/StockCategories.javaক্লাসে সমস্ত স্টক ক্যাটাগরি এবং তাদের সাথে সম্পর্কিত বিষয়ের নামের একটি তালিকা রয়েছে।

স্টার্টার অ্যাপটি চালান
- আপনার অ্যান্ড্রয়েড ডিভাইসটি আপনার কম্পিউটারের সাথে সংযুক্ত করুন অথবা একটি এমুলেটর শুরু করুন।
- উপরের টুলবারে, আপনার লক্ষ্য অ্যান্ড্রয়েড ডিভাইস বা এমুলেটর নির্বাচন করুন এবং রান বোতাম টিপুন।

- অ্যাপ UI দেখতে নিচের মতো হবে:

- অ্যাপটি একটি FCM রেজিস্ট্রেশন টোকেন তৈরি করবে এবং এটি লগ করবে। তবে অ্যাপ UI-তে কোনও পরিবর্তন হবে না।
- পরবর্তী ধাপে ব্যবহার করা হবে বলে FCM রেজিস্ট্রেশন টোকেনটি কপি করে সংরক্ষণ করুন।

৫. একটি পরীক্ষামূলক বার্তা পাঠান
এখন আপনি শেষ ধাপে সেট আপ করা অ্যাপ ইনস্ট্যান্সে একটি পরীক্ষামূলক বার্তা পাঠাতে প্রস্তুত।
স্টার্টার সার্ভার কোডটি আমদানি করুন
IntelliJ IDEA শুরু করুন এবং messaging/fcm-topics-codelab/starter/StockNewsServer প্রকল্পটি খুলুন।
আপনার বাম নেভিগেশন বারের প্রজেক্ট ভিউটি দেখতে এরকম কিছু হওয়া উচিত:

মনে রাখবেন, Intellij IDEA-এর আপনার প্রকল্প তৈরি করতে কয়েক মিনিট সময় লাগতে পারে, যার মধ্যে প্রয়োজনীয় নির্ভরতাগুলিও অন্তর্ভুক্ত।
সার্ভার স্টার্টার কোডটি বুঝুন
- সার্ভার স্টার্টার কোডটি একটি গ্রেডল-ভিত্তিক জাভা প্রকল্প।
-
build.gradleফাইলটিতে ইতিমধ্যেই firebase-admin SDK এর উপর নির্ভরতা যুক্ত করা হয়েছে। এই SDK বিভিন্ন FCM বার্তা প্রেরণ কার্যকারিতা অ্যাক্সেস প্রদান করে।

- অবশেষে, দুটি ক্লাস আছে, যেমন:
-
FcmSender.java: এই ক্লাসে নিম্নলিখিত পদ্ধতিগুলি উল্লেখযোগ্য:-
initFirebaseSDK: ফায়ারবেস-অ্যাডমিন SDK আরম্ভ করে। -
sendMessageToFcmRegistrationToken: একটি FCM রেজিস্ট্রেশন টোকেনে একটি বার্তা পাঠান। -
sendMessageToFcmTopic: একটি FCM বিষয়ে একটি বার্তা পাঠান। -
sendMessageToFcmTopicCondition: একটি FCM টপিক কন্ডিশনে একটি বার্তা পাঠান।
-
-
FcmSubscriptionManager.java: এই ক্লাসে এমন পদ্ধতি রয়েছে যা সার্ভারের দিক থেকে বিষয় সাবস্ক্রিপশন পরিচালনা করার অনুমতি দেয়।-
initFirebaseSDK: ফায়ারবেস-অ্যাডমিন SDK আরম্ভ করে। -
subscribeFcmRegistrationTokensToTopic: একটি FCM বিষয়ে FCM নিবন্ধন টোকেন(গুলি) সাবস্ক্রাইব করুন। -
unsubscribeFcmRegistrationTokensFromTopic: একটি FCM বিষয় থেকে FCM নিবন্ধন টোকেন(গুলি) আনসাবস্ক্রাইব করুন।
-
-
সার্ভার কোড সেট আপ করা হচ্ছে
- প্রথমে, আমাদের একটি Firebase পরিষেবা অ্যাকাউন্ট সেট আপ করতে হবে যা firebase-admin SDK কে FCM API গুলিতে কল অনুমোদন করার অনুমতি দেয়।
- Firebase Console-এ যান, বাম নেভিগেশন বারে Project Overview- এর পাশে থাকা গিয়ার আইকনে ক্লিক করুন এবং Project settings নির্বাচন করুন।

- সেটিংস পৃষ্ঠায়, পরিষেবা অ্যাকাউন্ট নির্বাচন করুন এবং পরিষেবা অ্যাকাউন্ট তৈরি করুন ক্লিক করুন।

- এখন "নতুন প্রাইভেট কী তৈরি করুন" বোতামে ক্লিক করুন এবং আপনার কী ফাইলটি স্বয়ংক্রিয়ভাবে ডাউনলোড শুরু হবে।
- কী ফাইলটির নাম পরিবর্তন করে
service-account.jsonরাখুন এবং এটিmessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resourcesফোল্ডারে কপি করুন। -
FcmSender.javaএবংFcmSubscriptionManager.javaউভয়ই নিম্নলিখিত কোড ব্যবহার করে classpath থেকেservice-account.jsonফাইলটি লোড করে।
- Firebase Console-এ যান, বাম নেভিগেশন বারে Project Overview- এর পাশে থাকা গিয়ার আইকনে ক্লিক করুন এবং Project settings নির্বাচন করুন।
- এই মুহুর্তে, সার্ভার কোড প্রস্তুত। উপরের মেনু বার থেকে Build -> Build Project চালান।
একটি পরীক্ষামূলক বার্তা পাঠানো হচ্ছে
-
FcmSender.javaতেsendMessageToFcmRegistrationTokenফাংশনটি খুঁজুন এবং আপনার কপি করা FCM রেজিস্ট্রেশন টোকেনটি প্রবেশ করান।registrationTokenফিল্ডে স্টার্টার অ্যাপ সেকশনটি চালান । -
mainফাংশনে, শুধুমাত্রsendMessageToFcmRegistrationTokenফাংশনটি আনকমেন্ট করুন এবং কোডটি কার্যকর করতে রান এ ক্লিক করুন।-
messageবস্তুরTokenক্ষেত্রে FCM নিবন্ধন টোকেন কীভাবে সেট করা হয়েছে তা লক্ষ্য করুন। - তদুপরি, লক্ষ্য করুন কিভাবে আমরা
FirebaseMessagingইন্টারফেসেরsendAPI ব্যবহার করেছি।
-

- এটি আপনার পূর্ববর্তী ধাপে সেট আপ করা অ্যাপ ইনস্ট্যান্সে একটি বার্তা পাঠাবে।
- যখন অ্যাপের ইনস্ট্যান্সটি ফোরগ্রাউন্ডে থাকবে, তখন আপনি বার্তার বিষয়বস্তু লগ করা দেখতে পাবেন।

- এবং যখন অ্যাপ ইনস্ট্যান্সটি ব্যাকগ্রাউন্ডে থাকে, তখন আপনি নোটিফিকেশন ট্রেতে বার্তাটি উপস্থিত হতে লক্ষ্য করবেন।

অসাধারণ, আপনি একটি অ্যাপ ইনস্ট্যান্সে বার্তা পাঠানোর জন্য Firebase Admin SDK ব্যবহার করেছেন। আপনার সার্ভারে Firebase Admin SDK ব্যবহার সম্পর্কে আরও পড়ুন।
৬. বিষয় সাবস্ক্রিপশন / আনসাবস্ক্রিপশন বাস্তবায়ন করুন
এই ধাপে আপনি অ্যান্ড্রয়েড অ্যাপের স্টক ক্যাটাগরি টগল-এ টপিক সাবস্ক্রিপশন এবং আনসাবস্ক্রিপশন অ্যাকশন বাস্তবায়ন করবেন।
যখন কোনও অ্যাপ ব্যবহারকারী কোনও নির্দিষ্ট স্টক বিভাগের জন্য স্যুইচটি টগল করেন, তখন একটি বিষয় সাবস্ক্রিপশন বা আনসাবস্ক্রিপশন কল করা হবে।
পর্যালোচনা কোড
- অ্যান্ড্রয়েড অ্যাপ কোডের
SubscriptionAdapter.javaক্লাসে যান এবংRecyclerViewViewHolderক্লাসটি সনাক্ত করুন।

- ক্লাস কনস্ট্রাক্টর
setOnCheckedChangeListenerব্যবহার করে সাবস্ক্রিপশন টগলের জন্য একটি শ্রোতা সেট আপ করে। - সুইচ টগলের উপর নির্ভর করে, সাবস্ক্রাইব এবং আনসাবস্ক্রাইব ক্রিয়াগুলি যথাক্রমে
subscribeToStockCategoryএবংunsubscribeFromStockCategoryপদ্ধতিতে কল করে সম্পাদিত হয়। - রিসাইক্লারভিউ অ্যাডাপ্টারের
onBindViewHolderদ্বারাsetDataপদ্ধতিটি ডাকা হয় যাতে ViewHolder কে উপযুক্ত স্টক ক্যাটাগরির সাথে আবদ্ধ করা যায়।
বিষয় সাবস্ক্রিপশন বাস্তবায়ন করুন
-
subscribeToStockCategoryপদ্ধতিতে, আপনিFirebaseMessagingঅবজেক্টেরsubscribeToTopicAPI-তে কলটি বাস্তবায়ন করবেন। কোডটি দেখতে এরকম কিছু হতে পারে:
void subscribeToStockCategory() {
// Making call to FCM for subscribing to the topic for stockCategory
FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
unused -> {
// Subscribing action successful
Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
Toast.LENGTH_SHORT).show();
});
}
বিষয় আনসাবস্ক্রাইব বাস্তবায়ন করুন
- একইভাবে, else অবস্থায়, আপনি
unsubscribeFromTopicAPI কলটি বাস্তবায়ন করবেন। নিম্নলিখিতগুলির সাথে কিছু:
void unsubscribeFromStockCategory() {
// Making call to FCM for unsubscribing from the topic for stockCategory
FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
.addOnSuccessListener(unused -> {
// Unsubscribing action successful
Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
Toast.LENGTH_SHORT).show();
});
}
চলো চেষ্টা করে দেখি।
- অ্যাপটি চালান এবং সাবস্ক্রাইব এবং আনসাবস্ক্রাইব অ্যাকশন চালানোর জন্য স্টক ক্যাটাগরি অপশনগুলি টগল করুন। এটি দেখতে এরকম কিছু হবে:
সাবস্ক্রাইব | আনসাবস্ক্রাইব করুন |
|
|
৭. আপনার প্রথম বিষয় বার্তা পাঠানো
এই ধাপে আপনি একটি FCM বিষয় বার্তা পাঠানোর জন্য সার্ভার সাইড কোড বাস্তবায়ন করবেন।
বিষয় বার্তা পাঠানোর জন্য সার্ভার সাইড ইন্টিগ্রেশন বাস্তবায়ন করুন
- সার্ভার কোডে,
FcmSender.javaতে যান এবংsendMessageToFcmTopicনামক পদ্ধতিটি সনাক্ত করুন।

- প্রথম লাইনে, আপনি যে FCM টপিকে বার্তাটি পাঠাতে চান তা লিখুন।
- এটি এই ফর্মের একটি স্ট্রিং:
/topics/<Topic Name>। উদাহরণস্বরূপ,/topics/Technology।
- এটি এই ফর্মের একটি স্ট্রিং:
- পরবর্তী লাইনগুলিতে একটি নতুন
messageবস্তু তৈরি করুন (sendMessageToFcmRegistrationTokenফাংশনে সংজ্ঞায়িত বস্তুর অনুরূপ)।- পার্থক্যটি হবে
messageবস্তুরTokenক্ষেত্র সেট করার পরিবর্তে, আপনিTopicক্ষেত্র সেট করবেন।
- পার্থক্যটি হবে
Message message = Message.builder()
.putData("FOOTECH", "$1000")
.setNotification(
Notification.builder()
.setTitle("Investor confidence in Tech Stocks growing")
.setBody("Foo Tech leading the way in stock growth for Tech sector.")
.build())
.setTopic(topicName)
.build();
- এখন বার্তাটি পাঠানোর জন্য
FirebaseMessagingইনস্ট্যান্সে কলটি যোগ করুন (sendMessageToFcmRegistrationTokenফাংশনে করা সেন্ড কলের মতো)।
FirebaseMessaging.getInstance().send(message);
- অবশেষে,
mainফাংশনটি আপডেট করুন এবং কলটি শুধুমাত্রsendMessageToFcmTopicফাংশনে সক্ষম করুন।

বার্তা পাঠান এবং রসিদ যাচাই করুন
- টপিক মেসেজ পাঠানোর আগে, প্রথমে নিশ্চিত করুন যে আপনার অ্যাপ ইনস্ট্যান্সটি আপনি যে টপিকে পাঠাতে চান তাতে সাবস্ক্রাইব করা আছে।
- এটি সংশ্লিষ্ট টগলের একটি ফ্লিপ দিয়ে করা যেতে পারে। উদাহরণস্বরূপ:

- আপনি এখন
FcmSender.javaএরmainফাংশনটি সম্পাদন করে আপনার বিষয় বার্তা পাঠাতে পারেন। - আগের মতোই, আপনি অ্যাপ ইনস্ট্যান্সে বার্তা প্রাপ্তি পর্যবেক্ষণ করতে সক্ষম হবেন।
- ফোরগ্রাউন্ডে অ্যাপের উদাহরণ

- ব্যাকগ্রাউন্ডে অ্যাপের উদাহরণ

- বোনাস: আপনি যে বিষয়ে বার্তাটি পাঠিয়েছেন সেটি আনসাবস্ক্রাইব করে আবার বার্তাটি পাঠান। আপনি লক্ষ্য করবেন যে বার্তাটি অ্যাপ ইনস্ট্যান্সে পৌঁছে দেওয়া হচ্ছে না।
৮. আপনার প্রথম বিষয়ের অবস্থা সংক্রান্ত বার্তা পাঠানো
টপিক কন্ডিশন ফিচারটি আপনাকে বিভিন্ন বিষয়ের সংমিশ্রণে বার্তা পাঠাতে সাহায্য করে, যা আপনাকে আরও অভিব্যক্তিপূর্ণ শ্রোতা সংজ্ঞা প্রদান করতে সক্ষম করে।
উদাহরণস্বরূপ, আমাদের স্টকনিউজ অ্যাপে, প্রযুক্তি বা অটোমোটিভ বিষয়ের সাবস্ক্রাইব করা অ্যাপ ইনস্ট্যান্সের একটি গ্রুপকে বার্তা পাঠানোর সম্ভাবনা বিবেচনা করুন। উদাহরণস্বরূপ, যদি Waymo-এর সাথে সম্পর্কিত কোনও উল্লেখযোগ্য ঘটনা ঘটে তবে এই ধরনের ঘটনা ঘটতে পারে।
Topics আপনাকে নিম্নলিখিত অপারেটরগুলি ব্যবহার করে বুলিয়ান এক্সপ্রেশন আকারে আপনার সংমিশ্রণ প্রকাশ করতে দেয়।
- && : লজিক্যাল AND। উদাহরণস্বরূপ,
'Technology' in topics && 'Automotive' in topics- কেবলমাত্র সেই অ্যাপের উদাহরণগুলিকে লক্ষ্য করে যারা প্রযুক্তি এবং অটোমোটিভ বিষয় উভয়ের জন্য সাবস্ক্রাইব করা আছে। - || : লজিক্যাল OR। উদাহরণস্বরূপ,
'Technology' in topics || 'Automotive' in topics- প্রযুক্তি বা অটোমোটিভ বিষয়গুলিতে সাবস্ক্রাইব করা অ্যাপের উদাহরণগুলিকে লক্ষ্য করে। - () : গ্রুপিংয়ের জন্য বন্ধনী। উদাহরণস্বরূপ,
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)- কেবলমাত্র প্রযুক্তি এবং অটোমোটিভ বা শক্তি বিষয়গুলিতে সাবস্ক্রাইব করা অ্যাপের উদাহরণগুলিকে লক্ষ্য করে।
এই কার্যকারিতা ব্যবহারের জন্য কীভাবে অনুরোধ পাঠানোর ব্যবস্থা তৈরি করবেন সে সম্পর্কে আরও পড়ুন।
বিষয় শর্ত বার্তা পাঠানোর জন্য সার্ভার সাইড ইন্টিগ্রেশন বাস্তবায়ন করুন
- সার্ভার কোডে ফিরে,
FcmSender.javaতে যান এবংsendMessageToFcmTopicConditionনামক পদ্ধতিটি সনাক্ত করুন।

- প্রথম লাইনে,
topicConditionভেরিয়েবলের জন্য, আপনি যে topic condition-এ বার্তা পাঠাতে চান তা লিখুন। আপনি এটি সেট করতে পারেন:'Technology' in topics && 'Automotive' in topics। - পরবর্তী লাইনগুলিতে, একটি নতুন
messageবস্তু তৈরি করুন (sendMessageToFcmTopicফাংশনে সংজ্ঞায়িত বস্তুর অনুরূপ)।- পার্থক্যটি হবে বস্তুর
Topicক্ষেত্র সেট করার পরিবর্তে, আপনিConditionক্ষেত্র সেট করবেন।
- পার্থক্যটি হবে বস্তুর
Message message = Message.builder()
.putData("FOOCAR", "$500")
.setNotification(
Notification.builder()
.setTitle("Foo Car shows strong Q2 results")
.setBody("Foo Car crosses 1B miles. Stocks rally.")
.build())
.setCondition(topicCondition)
.build();
- এখন বার্তাটি পাঠানোর জন্য
FirebaseMessagingইনস্ট্যান্সে কলটি যোগ করুন (sendMessageToFcmTopicফাংশনে করা সেন্ড কলের মতো)।
FirebaseMessaging.getInstance().send(message);
- অবশেষে,
mainফাংশনটি আপডেট করুন এবং কলটি শুধুমাত্রsendMessageToFcmTopicConditionফাংশনে সক্ষম করুন।

বার্তাটি পাঠান এবং রসিদ যাচাই করুন
- টপিক মেসেজ পাঠানোর আগে, প্রথমে নিশ্চিত করুন যে আপনার অ্যাপ ইনস্ট্যান্সটি নির্দিষ্ট টপিক শর্ত পূরণ করে, প্রযুক্তি এবং অটোমোটিভ উভয় টপিকের জন্য অ্যাপ ইনস্ট্যান্স সাবস্ক্রাইব করুন।
- আপনি এখন
FcmSender.javaএরmainফাংশনটি সম্পাদন করে আপনার বিষয় বার্তা পাঠাতে পারেন। - আগের মতো, আপনি অ্যাপ ইনস্ট্যান্সে বার্তা প্রাপ্তি পর্যবেক্ষণ করতে সক্ষম হবেন।
- ফোরগ্রাউন্ডে অ্যাপের উদাহরণ

- ব্যাকগ্রাউন্ডে অ্যাপের উদাহরণ

- বোনাস: আপনি এখন প্রযুক্তি বিষয় থেকে আনসাবস্ক্রাইব করতে পারেন এবং বিষয় শর্ত বার্তাটি পুনরায় পাঠাতে পারেন। আপনার লক্ষ্য করা উচিত যে বার্তাটি অ্যাপ ইনস্ট্যান্স দ্বারা গৃহীত হয়নি।
9. সংক্ষিপ্তসার
এখন পর্যন্ত তুমি যা শিখেছো তার একটা সংক্ষিপ্ত বিবরণ দেওয়া যাক।
- একটি অ্যাপ ইনস্ট্যান্স থেকে কীভাবে একটি বিষয় সাবস্ক্রিপশন / আনসাবস্ক্রিপশন শুরু করবেন।
- সাবস্ক্রাইব করা অ্যাপের উদাহরণগুলিতে বিষয়টিতে একটি বার্তা পাঠানো এবং প্রাপ্তি যাচাই করা।
- একটি বিষয়ের শর্তে একটি বার্তা পাঠানো এবং শর্ত পূরণ করে এমন একটি অ্যাপ ইনস্ট্যান্সের রসিদ যাচাই করা।
পরবর্তী বিভাগে, আপনি শিখবেন কিভাবে ক্লায়েন্ট পক্ষ থেকে কল ইনস্ট্যান্ট না করেই আপনি বিষয়গুলিতে অ্যাপ ইনস্ট্যান্স সাবস্ক্রাইব/আনসাবস্ক্রাইব করতে পারেন।

১০. সার্ভার সাইড থেকে টপিক সাবস্ক্রিপশন পরিচালনা করুন
এখন পর্যন্ত, এই কোডল্যাবে, সমস্ত বিষয় সাবস্ক্রিপশন এবং আনসাবস্ক্রিপশন কল একটি অ্যাপ ইনস্ট্যান্স থেকে শুরু করা হয়।
তবে, কিছু ব্যবহারের ক্ষেত্রে, আপনি সার্ভার সাইড থেকে বিষয় সাবস্ক্রিপশন পরিচালনা করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি অ্যাপ রোলআউটের জন্য অপেক্ষা না করেই আপনার বিদ্যমান ব্যবহারকারী বেসের একটি উপগোষ্ঠীকে একটি নতুন বিষয়ে সাবস্ক্রাইব করতে চাইতে পারেন।
এই বিভাগে, আপনি শিখবেন কিভাবে Firebase Admin SDK ব্যবহার করে সার্ভার থেকে কল করে কোনও বিষয়ে FCM রেজিস্ট্রেশন টোকেনের একটি ব্যাচ সাবস্ক্রাইব এবং আনসাবস্ক্রাইব করতে হয়।
FCM বিষয়ে FCM নিবন্ধন টোকেনের সার্ভার সাইড সাবস্ক্রিপশন বাস্তবায়ন করুন।
- সার্ভার কোডে,
FcmSubscriptionManager.javaক্লাসে যান।subscribeFcmRegistrationTokensToTopicনামক পদ্ধতিটি খুঁজুন। আপনি এখানেsubscribeToTopicAPI কলটি বাস্তবায়ন করবেন।

- আসুন অ্যাপ ইনস্ট্যান্সটিকে এনার্জি টপিকে সাবস্ক্রাইব করি। এটি করার জন্য, প্রথমে নিম্নলিখিত দুটি ক্ষেত্রের জন্য ডেটা সরবরাহ করুন:
-
registrationTokens: FCM রেজিস্ট্রেশন টোকেনগুলির প্রতিনিধিত্বকারী স্ট্রিংগুলির একটি কমা দ্বারা পৃথক তালিকা যার জন্য আপনি বিষয় সাবস্ক্রিপশন তৈরি করতে চান। -
topicName: শক্তি বিষয়ের জন্য বিষয়ের নাম, অর্থাৎ/topics/Energy।
-
- পরবর্তী কয়েকটি লাইনে কলটি বাস্তবায়ন করুন, এই লাইনগুলি অনুসরণ করে:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
registrationTokens, topicName);
- আপনি কিছু উচ্চ স্তরের ফলাফলের পরিসংখ্যানের জন্য
TopicManagementResponseপরিদর্শন করতে পারেন। যেমনgetSuccessCountব্যবহার করে সফলভাবে তৈরি করা বিষয় সাবস্ক্রিপশনের সংখ্যা প্রিন্ট করা।
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- অবশেষে,
mainফাংশনে শুধুমাত্রsubscribeFcmRegistrationTokensToTopicফাংশনে কল সক্ষম করুন।
সাবস্ক্রিপশন তৈরি করুন এবং বিষয় বার্তা পাঠান
- এই মুহুর্তে আপনি বিষয় সাবস্ক্রিপশন তৈরি করতে এবং এতে একটি বার্তা পাঠাতে প্রস্তুত।
-
FcmSubscriptionManager.javaক্লাসেরmainফাংশনটি সম্পাদন করুন। এটি একটি টপিক সাবস্ক্রিপশন তৈরি করবে। - এখন, বার্তা পাঠানোর জন্য কোড সেট আপ করুন। আগের মতোই,
-
FcmSender.javaতে,sendMessageToFcmTopicফাংশনটি সনাক্ত করুন। -
topicNameএনার্জি টপিকে সেট করুন, অর্থাৎ,/topics/Energy। - একটি
Messageঅবজেক্ট তৈরি করুন এবংsetTopicব্যবহার করে বিষয়টিকে লক্ষ্য করুন। - অবশেষে, শুধুমাত্র
sendMessageToFcmTopicফাংশনটি সক্ষম করতেmainপদ্ধতিটি আপডেট করুন।
-
-
FcmSender.javaএরmainফাংশনটি সম্পাদন করুন। এটি আপনার অ্যাপ ইনস্ট্যান্সে বার্তাটি পাঠাবে এবং আপনি এটি আপনার অ্যাপে নিম্নরূপ পর্যবেক্ষণ করতে পারবেন।- ফোরগ্রাউন্ডে অ্যাপের উদাহরণ

- ব্যাকগ্রাউন্ডে অ্যাপের উদাহরণ

FCM বিষয়ে FCM নিবন্ধন টোকেনের সার্ভার সাইড আনসাবস্ক্রাইব বাস্তবায়ন করুন
- সার্ভার সাইড টপিক আনসাবস্ক্রিপশনের জন্য, এই
unsubscribeFromTopicAPI ব্যবহার করুন। আপনিFcmSubscriptionManager.javaক্লাসেরunsubscribeFcmRegistrationTokensFromTopicফাংশনে প্রাসঙ্গিক কোড যোগ করবেন।

- সার্ভার সাইড আনসাবস্ক্রিপশন কোড বাস্তবায়ন করা এবং একটি বিষয় বার্তা পাঠিয়ে এর প্রভাব যাচাই করা, আপনার জন্য একটি অনুশীলন হিসাবে বাকি আছে।
১১. অভিনন্দন
অভিনন্দন, আপনি সফলভাবে FCM বিষয়গুলি ব্যবহার করে আপনার অ্যাপের ইনস্ট্যান্সের সাবগ্রুপগুলিতে মাল্টিকাস্ট বার্তা পাঠাতে পেরেছেন। এটি আপনার ব্যবহারকারীদের কাছে প্রাসঙ্গিক সামগ্রী সময়মতো পৌঁছানোর ক্ষমতাকে সহজতর করতে সাহায্য করবে।

এরপর কী?
এখন যেহেতু আপনি আপনার কোডল্যাব সম্পন্ন করেছেন, নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করে অন্যান্য প্ল্যাটফর্মের জন্য বিষয়গুলি চেষ্টা করার কথা বিবেচনা করুন:

