1. ভূমিকা
গোল
এই কোডল্যাবে আপনি শিখবেন কিভাবে আপনার মাল্টি-প্ল্যাটফর্ম অ্যাপটিকে ইনস্ট্রুমেন্ট করতে হয় যাতে আপনি FCM বিষয়গুলি ব্যবহার করে আপনার অ্যাপ ইন্সট্যান্সের বিভিন্ন সাবগ্রুপে মাল্টিকাস্ট পুশ বার্তা পাঠাতে পারেন।
একবার শেষ হয়ে গেলে, আপনি এই সাবগ্রুপগুলির পাশাপাশি সাবগ্রুপগুলিতে মাল্টিকাস্ট পুশ বার্তাগুলি পরিচালনা করতে FCM পরিকাঠামোর সুবিধা নিতে সক্ষম হবেন।
বিষয় ওভারভিউ
বিষয়গুলি হল একটি এফসিএম অবকাঠামো সমর্থিত উপায় যা বার্তা সহ আপনার অ্যাপ ইন্সট্যান্সের সাবগ্রুপগুলিতে পৌঁছানোর।
FCM বার্তা পাঠানোর পাশাপাশি এই বিষয়গুলিতে সদস্যতা বজায় রাখার জন্য API প্রদান করে। একটি অ্যাপ ইন্সট্যান্সকে বিষয়ের সাথে যুক্ত এবং বিচ্ছিন্ন করার কাজটিকে যথাক্রমে সাবস্ক্রাইব এবং আনসাবস্ক্রাইব বলা হয়
বিষয়গুলি সর্বজনীনভাবে উপলব্ধ সামগ্রীর জন্য ব্যবহার করা উচিত। উদাহরণস্বরূপ, আবহাওয়ার আপডেট সম্পর্কে বার্তা। আপনি যদি ব্যবহারকারী-সংবেদনশীল বার্তা পাঠাতে চান, একাধিক ডিভাইসে মাল্টিকাস্টিং বার্তাগুলির জন্য Firebase অ্যাডমিন SDK ব্যবহার করুন।
বিষয়-ভিত্তিক মাল্টিকাস্টিং থ্রুপুটের জন্য অপ্টিমাইজ করা হয়েছে।
আপনি কি শিখবেন
- কিভাবে একটি মোবাইল অ্যাপ থেকে বিষয়গুলিতে ব্যবহারকারীদের সদস্যতা (এবং সদস্যতা ত্যাগ) করতে হয়।
- কিভাবে বিষয় ব্যবহার করে মাল্টিকাস্ট পুশ বার্তা পাঠাতে হয়।
- বিষয় শর্তাবলী ব্যবহার করে বিষয়গুলির সংমিশ্রণে কীভাবে বার্তা পাঠাবেন।
- সার্ভার সাইডে টপিক সাবস্ক্রিপশন কিভাবে পরিচালনা করবেন এবং বাল্ক সাবস্ক্রিপশন এবং আনসাবস্ক্রিপশন করবেন।
আপনি কি নির্মাণ করবেন
- একটি Android অ্যাপ যা বিষয়গুলিতে সদস্যতা/আনসাবস্ক্রাইব করে এবং বিষয়গুলিতে পাঠানো হলে বার্তাগুলি গ্রহণ করে।
- Firebase অ্যাডমিন SDK ব্যবহার করে একটি সার্ভার সাইড ইন্টিগ্রেশন, যা FCM API-এর মাধ্যমে বিষয় বার্তা পাঠাতে ব্যবহার করা হবে।
আপনি কি প্রয়োজন হবে
- আপনার পছন্দের একটি ব্রাউজার, যেমন Chrome।
- জাভা অ্যাপ্লিকেশন ডেভেলপ করার জন্য IntelliJ IDEA IDE.
- ইনস্টল করার সময় Gradle-এর জন্য অপ্ট-ইন সমর্থন নিশ্চিত করুন।
- অ্যান্ড্রয়েড অ্যাপ্লিকেশন বিকাশের জন্য অ্যান্ড্রয়েড স্টুডিও আইডিই।
- অ্যান্ড্রয়েড অ্যাপ্লিকেশন চালানোর জন্য একটি ডিভাইস। যেকোনো একটি:
- অ্যান্ড্রয়েড এমুলেটর। ( এন্ড্রয়েড স্টুডিওতে সেটআপ প্রয়োজন)।
- আপনার কম্পিউটারের সাথে সংযুক্ত একটি শারীরিক Android ডিভাইস এবং বিকাশকারী মোডে সেট করা হয়েছে৷
- আপনার 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 ডিরেক্টরিতে স্থাপন করা হয়েছে।
একটি ফায়ারবেস প্রকল্প তৈরি করুন
- আপনার Google অ্যাকাউন্ট ব্যবহার করে Firebase কনসোলে সাইন ইন করুন।
- একটি নতুন প্রকল্প তৈরি করতে বোতামটি ক্লিক করুন এবং তারপরে একটি প্রকল্পের নাম লিখুন (উদাহরণস্বরূপ,
StockNews)। - অবিরত ক্লিক করুন.
- অনুরোধ করা হলে, Firebase শর্তাবলী পর্যালোচনা করুন এবং স্বীকার করুন এবং তারপর চালিয়ে যান এ ক্লিক করুন।
- (ঐচ্ছিক) Firebase কনসোলে AI সহায়তা সক্ষম করুন ("Firebase-এ Gemini" বলা হয়)।
- এই কোডল্যাবের জন্য, আপনার Google Analytics এর প্রয়োজন নেই , তাই Google Analytics বিকল্পটি টগল করুন ।
- প্রকল্প তৈরি করুন ক্লিক করুন, আপনার প্রকল্পের বিধানের জন্য অপেক্ষা করুন এবং তারপরে অবিরত ক্লিক করুন।
অভিনন্দন! আপনি এইমাত্র আপনার Firebase প্রকল্প তৈরি করেছেন।
3. প্ল্যাটফর্ম-নির্দিষ্ট ফায়ারবেস অ্যাপ কনফিগারেশন
Firebase সমর্থন সক্ষম করার জন্য প্রয়োজনীয় বেশিরভাগ কোড পরিবর্তন ইতিমধ্যেই আপনি যে প্রকল্পে কাজ করছেন তাতে চেক করা হয়েছে। যাইহোক, মোবাইল প্ল্যাটফর্মের জন্য সমর্থন যোগ করার জন্য, আপনাকে এটি করতে হবে:
- Firebase প্রকল্পে পছন্দসই প্ল্যাটফর্ম নিবন্ধন করুন৷
- প্ল্যাটফর্ম-নির্দিষ্ট কনফিগারেশন ফাইলটি ডাউনলোড করুন এবং কোডে যোগ করুন।
এই কোডল্যাবের উদ্দেশ্যে, আমরা একটি Android Firebase অ্যাপ যোগ করতে যাচ্ছি।
অ্যান্ড্রয়েড কনফিগার করুন
- ফায়ারবেস কনসোলে , সেটিংস কগ-এ বাঁদিকের নেভিগেশন বারের শীর্ষে প্রজেক্ট সেটিংস নির্বাচন করুন এবং সাধারণ পৃষ্ঠায় আপনার অ্যাপের অধীনে অ্যান্ড্রয়েড আইকনে ক্লিক করুন।
আপনি নিম্নলিখিত ডায়ালগ দেখতে হবে: 
- প্রদান করার জন্য গুরুত্বপূর্ণ মান হল Android প্যাকেজের নাম ।
com.ticker.stocknewsএ সেট করুন।- এখানে প্রদত্ত প্যাকেজের নামটি আপনার স্টার্টার StockNewsApp কোডের
AndroidManifest.xmlএ দেওয়া প্যাকেজটির মতোই হতে হবে। আপনি যদি এটি সনাক্ত করতে বা পরিবর্তন করতে চান তবে এই পদক্ষেপগুলি অনুসরণ করুন:- StockNewsApp ডিরেক্টরিতে,
app/src/main/AndroidManifest.xmlফাইলটি খুলুন। -
manifestএলিমেন্টে,packageঅ্যাট্রিবিউটের স্ট্রিং ভ্যালু খুঁজুন। এই মানটি Android প্যাকেজের নাম।
- StockNewsApp ডিরেক্টরিতে,
- এখানে প্রদত্ত প্যাকেজের নামটি আপনার স্টার্টার StockNewsApp কোডের
- Firebase ডায়ালগে, অনুলিপি করা প্যাকেজের নামটি Android প্যাকেজ নামের ক্ষেত্রে পেস্ট করুন।
- এই কোডল্যাবের জন্য আপনার ডিবাগ সাইনিং সার্টিফিকেট SHA-1 প্রয়োজন নেই, কারণ এই অ্যাপটি প্রকাশ করা হবে না। এই ফাঁকা ছেড়ে দিন.
- রেজিস্টার অ্যাপে ক্লিক করুন।
- Firebase কনসোলে অবিরত,
google-services.jsonকনফিগারেশন ফাইলটি ডাউনলোড করতে নির্দেশাবলী অনুসরণ করুন। - আপনি অবশিষ্ট সেটআপ পদক্ষেপগুলি এড়িয়ে যেতে পারেন, কারণ বাকি সবকিছু ইতিমধ্যেই স্টার্টার অ্যাপ কোডে কনফিগার করা আছে৷ আপনি Firebase কনসোলের প্রধান পৃষ্ঠায় তালিকাভুক্ত আপনার অ্যাপটি পাবেন।
-
google-services.jsonফাইলটি (যেটি আপনি এইমাত্র ডাউনলোড করেছেন)messaging/fcm-topics-codelab/starter/StockNewsApp/appডিরেক্টরিতে কপি করুন।
4. আপনার অ্যাপ তৈরি করুন এবং চালান৷
আপনি আসলে আপনার অ্যাপে কাজ শুরু করতে প্রস্তুত! প্রথমে অ্যাপটি তৈরি করে রান করুন।
স্টার্টার অ্যাপ আমদানি করুন
অ্যান্ড্রয়েড স্টুডিও শুরু করুন এবং স্টার্টার কোড ডিরেক্টরি থেকে messaging/fcm-topics-codelab/starter/StockNewsApp আমদানি করুন।
প্রকল্পটি লোড হওয়ার পরে, আপনি একটি সতর্কতাও দেখতে পারেন যে গিট আপনার সমস্ত স্থানীয় পরিবর্তনগুলি ট্র্যাক করছে না, আপনি " উপেক্ষা " বা উপরের ডানদিকে " X " ক্লিক করতে পারেন। (আপনি গিট রেপোতে কোনও পরিবর্তন ফিরিয়ে আনবেন না।)
প্রজেক্ট উইন্ডোর উপরের বাম কোণে, আপনি যদি অ্যান্ড্রয়েড ভিউতে থাকেন তবে নীচের ছবির মতো কিছু দেখতে পাবেন। (আপনি যদি প্রকল্পের দৃশ্যে থাকেন তবে একই জিনিস দেখতে আপনাকে প্রকল্পটি প্রসারিত করতে হবে)

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

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

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

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

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

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

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

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

5. একটি পরীক্ষা বার্তা পাঠান
এখন আপনি শেষ ধাপে যে অ্যাপটি সেট আপ করেছিলেন সেটিতে একটি পরীক্ষার বার্তা পাঠাতে প্রস্তুত৷
স্টার্টার সার্ভার কোড আমদানি করুন
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-তে কল অনুমোদন করতে দেয়৷
- ফায়ারবেস কনসোলে যান, বাম নেভিগেশন বারে প্রজেক্ট ওভারভিউ-এর পাশে গিয়ার আইকনে ক্লিক করুন এবং প্রজেক্ট সেটিংস নির্বাচন করুন।

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

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

- আপনি আগের ধাপে যে অ্যাপটি সেট আপ করেছেন সেটিতে এটি একটি বার্তা পাঠাতে হবে।
- যখন অ্যাপের উদাহরণটি ফোরগ্রাউন্ডে থাকে, তখন আপনি বার্তা সামগ্রীটি লগ করা দেখতে পাবেন।

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

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

- ক্লাস কনস্ট্রাক্টর
setOnCheckedChangeListenerব্যবহার করে সাবস্ক্রিপশন টগলের জন্য একজন শ্রোতা সেট আপ করে। - সুইচ টগলের উপর নির্ভর করে, যথাক্রমে
subscribeToStockCategoryএবংunsubscribeFromStockCategoryপদ্ধতিতে কল করে সাবস্ক্রাইব এবং আনসাবস্ক্রাইব ক্রিয়া করা হয়। -
setDataপদ্ধতিটি রিসাইক্লারভিউ অ্যাডাপ্টারেরonBindViewHolderদ্বারা উপযুক্ত স্টক বিভাগের সাথে ভিউহোল্ডারকে আবদ্ধ করার জন্য কল করা হয়।
বিষয় সদস্যতা বাস্তবায়ন
-
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();
});
}
বিষয় আনসাবস্ক্রিপশন বাস্তবায়ন
- একইভাবে, অন্য অবস্থায়, আপনি
unsubscribeFromTopicএপিআই করার কলটি বাস্তবায়ন করবেন। নিম্নলিখিত লাইন বরাবর কিছু:
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();
});
}
এর চেষ্টা করা যাক
- অ্যাপটি চালান এবং সাবস্ক্রাইব এবং আনসাবস্ক্রাইব অ্যাকশন চালানোর জন্য স্টক ক্যাটাগরি বিকল্পগুলি টগল করুন। এটা এই মত কিছু দেখতে হবে:
সদস্যতা | সদস্যতা ত্যাগ করুন |
|
|
7. আপনার প্রথম বিষয় বার্তা পাঠানো হচ্ছে
এই ধাপে আপনি একটি 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ফাংশনটি সম্পাদন করে আপনার বিষয় বার্তা পাঠাতে পারেন। - আগের মতো আপনি অ্যাপ ইনস্ট্যান্সে বার্তা রসিদ পর্যবেক্ষণ করতে সক্ষম হবেন।
- অগ্রভাগে অ্যাপের উদাহরণ

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

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

- প্রথম লাইনে,
topicConditionভেরিয়েবলের জন্য, আপনি যে বিষয়ে বার্তা পাঠাতে চান সেটি প্রদান করুন। আপনি এটি সেট করতে পারেন:'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. রিক্যাপ
আপনি এই বিন্দু পর্যন্ত যা শিখেছেন তার একটি দ্রুত সংকলন করা যাক।
- একটি অ্যাপ ইন্সট্যান্স থেকে কীভাবে একটি বিষয় সাবস্ক্রিপশন/আনসাবস্ক্রিপশন শুরু করবেন।
- বিষয়টিতে একটি বার্তা পাঠানো এবং সাবস্ক্রাইব করা অ্যাপের দৃষ্টান্তগুলিতে রসিদ যাচাই করা।
- একটি বিষয়ের শর্তে একটি বার্তা পাঠানো এবং শর্তটি সন্তুষ্ট করে এমন একটি অ্যাপ উদাহরণে রসিদ যাচাই করা।
পরবর্তী বিভাগে, আপনি কীভাবে ক্লায়েন্টের পক্ষ থেকে কল করার প্রয়োজন ছাড়াই বিষয়গুলিতে অ্যাপের ইন্সট্যান্স সাবস্ক্রাইব/আনসাবস্ক্রাইব করতে পারেন সে সম্পর্কে শিখবেন।

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

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

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

