FCM বিষয় ব্যবহার করে আপনার প্রথম মাল্টিকাস্ট পুশ বার্তা

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 ডিরেক্টরিতে স্থাপন করা হয়েছে।

একটি ফায়ারবেস প্রকল্প তৈরি করুন

  1. Firebase কনসোলে , প্রকল্প যোগ করুন ক্লিক করুন, Firebase প্রকল্পের নাম স্টকনিউজ এবং চালিয়ে যান ক্লিক করুন। দ্রষ্টব্য: আপনার ফায়ারবেস প্রকল্পের জন্য প্রজেক্ট আইডি মনে রাখবেন (বা আপনার পছন্দের প্রজেক্ট আইডি সেট করতে সম্পাদনা আইকনে ক্লিক করুন)।

fc08f9a7808e4553.png

  1. আপনি Google Analytics সক্ষম করা এড়িয়ে যেতে পারেন। এই কোডল্যাবের উদ্দেশ্যে, আপনার এটির প্রয়োজন নেই। অবিরত ক্লিক করুন.
  2. প্রকল্প তৈরি করুন ক্লিক করুন।

অভিনন্দন! আপনি এইমাত্র আপনার Firebase প্রকল্প তৈরি করেছেন। এখন, আপনি কনসোলে প্রবেশ করতে প্রকল্পের নামের উপর ক্লিক করতে পারেন।

3. প্ল্যাটফর্ম-নির্দিষ্ট ফায়ারবেস অ্যাপ কনফিগারেশন

Firebase সমর্থন সক্ষম করার জন্য প্রয়োজনীয় বেশিরভাগ কোড পরিবর্তন ইতিমধ্যেই আপনি যে প্রকল্পে কাজ করছেন তাতে চেক করা হয়েছে। যাইহোক, মোবাইল প্ল্যাটফর্মের জন্য সমর্থন যোগ করার জন্য, আপনাকে এটি করতে হবে:

  • Firebase প্রকল্পে পছন্দসই প্ল্যাটফর্ম নিবন্ধন করুন৷
  • প্ল্যাটফর্ম-নির্দিষ্ট কনফিগারেশন ফাইলটি ডাউনলোড করুন এবং কোডে যোগ করুন।

এই কোডল্যাবের উদ্দেশ্যে, আমরা একটি Android Firebase অ্যাপ যোগ করতে যাচ্ছি।

84e0b3199bef6d8a.png অ্যান্ড্রয়েড কনফিগার করুন

  1. ফায়ারবেস কনসোলে , সেটিংস কগ-এ বাঁদিকের নেভিগেশন বারের শীর্ষে প্রজেক্ট সেটিংস নির্বাচন করুন এবং সাধারণ পৃষ্ঠায় আপনার অ্যাপের অধীনে অ্যান্ড্রয়েড আইকনে ক্লিক করুন।

আপনি নিম্নলিখিত ডায়ালগ দেখতে হবে: 8254fc299e82f528.png

  1. প্রদান করার জন্য গুরুত্বপূর্ণ মান হল Android প্যাকেজের নামcom.ticker.stocknews এ সেট করুন।
    1. এখানে প্রদত্ত প্যাকেজের নামটি আপনার স্টার্টার StockNewsApp কোডের AndroidManifest.xml এ দেওয়া প্যাকেজটির মতোই হতে হবে। আপনি যদি এটি সনাক্ত করতে বা পরিবর্তন করতে চান তবে এই পদক্ষেপগুলি অনুসরণ করুন:
      1. StockNewsApp ডিরেক্টরিতে, app/src/main/AndroidManifest.xml ফাইলটি খুলুন।
      2. manifest এলিমেন্টে, package অ্যাট্রিবিউটের স্ট্রিং ভ্যালু খুঁজুন। এই মানটি Android প্যাকেজের নাম।
  1. Firebase ডায়ালগে, অনুলিপি করা প্যাকেজের নামটি Android প্যাকেজ নামের ক্ষেত্রে পেস্ট করুন।
  2. এই কোডল্যাবের জন্য আপনার ডিবাগ সাইনিং সার্টিফিকেট SHA-1 প্রয়োজন নেই, কারণ এই অ্যাপটি প্রকাশ করা হবে না। এই ফাঁকা ছেড়ে দিন.
  3. রেজিস্টার অ্যাপে ক্লিক করুন।
  4. Firebase কনসোলে অবিরত, google-services.json কনফিগারেশন ফাইলটি ডাউনলোড করতে নির্দেশাবলী অনুসরণ করুন।
  5. আপনি অবশিষ্ট সেটআপ পদক্ষেপগুলি এড়িয়ে যেতে পারেন, কারণ বাকি সবকিছু ইতিমধ্যেই স্টার্টার অ্যাপ কোডে কনফিগার করা আছে৷ আপনি Firebase কনসোলের প্রধান পৃষ্ঠায় তালিকাভুক্ত আপনার অ্যাপটি পাবেন।
  6. google-services.json ফাইলটি (যেটি আপনি এইমাত্র ডাউনলোড করেছেন) messaging/fcm-topics-codelab/starter/StockNewsApp/app ডিরেক্টরিতে কপি করুন।

4. আপনার অ্যাপ তৈরি করুন এবং চালান৷

আপনি আসলে আপনার অ্যাপে কাজ শুরু করতে প্রস্তুত! প্রথমে অ্যাপটি তৈরি করে রান করুন।

স্টার্টার অ্যাপ আমদানি করুন

অ্যান্ড্রয়েড স্টুডিও শুরু করুন এবং স্টার্টার কোড ডিরেক্টরি থেকে messaging/fcm-topics-codelab/starter/StockNewsApp আমদানি করুন।

প্রকল্পটি লোড হওয়ার পরে, আপনি একটি সতর্কতাও দেখতে পারেন যে গিট আপনার সমস্ত স্থানীয় পরিবর্তনগুলি ট্র্যাক করছে না, আপনি " উপেক্ষা " বা উপরের ডানদিকে " X " ক্লিক করতে পারেন। (আপনি গিট রেপোতে কোনও পরিবর্তন ফিরিয়ে আনবেন না।)

প্রজেক্ট উইন্ডোর উপরের বাম কোণে, আপনি যদি অ্যান্ড্রয়েড ভিউতে থাকেন তবে নীচের ছবির মতো কিছু দেখতে পাবেন। (আপনি যদি প্রকল্পের দৃশ্যে থাকেন তবে একই জিনিস দেখতে আপনাকে প্রকল্পটি প্রসারিত করতে হবে)

b574ea0089ee87c6.png

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

4bc64eb3b99eb0ae.png

আমরা সুপারিশ করছি যে আপনি কোড পরিবর্তন করার আগে এটি শেষ না হওয়া পর্যন্ত অপেক্ষা করুন। এটি অ্যান্ড্রয়েড স্টুডিওকে সমস্ত প্রয়োজনীয় উপাদানগুলিকে টানতে অনুমতি দেবে৷

এছাড়াও, আপনি যদি "ভাষা পরিবর্তনগুলি কার্যকর করার জন্য পুনরায় লোড করুন?" বা অনুরূপ কিছু, "হ্যাঁ" নির্বাচন করুন।

এমুলেটর সেটআপ

আপনার যদি একটি অ্যান্ড্রয়েড এমুলেটর সেট আপ করতে সহায়তার প্রয়োজন হয় তবে আপনার অ্যাপ চালান নিবন্ধটি পড়ুন।

অ্যান্ড্রয়েড অ্যাপ স্টার্টার কোড বুঝুন

  • স্টার্টার কোডটি ন্যূনতম কার্যকারিতা এবং UI সহ একটি হালকা ওজনের অ্যান্ড্রয়েড অ্যাপ।
  • ফায়ারবেস-মেসেজিং SDK-এর উপর নির্ভরতা ইতিমধ্যেই app/build.gradle ফাইলে যোগ করা হয়েছে।

f04ff8f48d186dff.png

  • AndroidManifest.xml এ, একটি MESSAGING_EVENT কলব্যাক হ্যান্ডলার ইতিমধ্যেই যোগ করা হয়েছে৷
    • এই হ্যান্ডলার, StockNewsMessagingService.java FirebaseMessagingService ক্লাস প্রসারিত করে যা বিভিন্ন Firebase ক্লাউড মেসেজিং সম্পর্কিত কার্যকারিতা প্রদান করে। আরও জানতে FirebaseMessagingService ডকুমেন্টেশন দেখুন। b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • এফসিএম রেজিস্ট্রেশন টোকেন তৈরি বা রিফ্রেশ হলে onNewToken ফাংশনটি কল করা হয়। আরও তথ্যের জন্য মনিটর টোকেন জেনারেশন দেখুন।
    • onMessageReceived ফাংশন কল করা হয় যখন একটি বার্তা প্রাপ্ত হয় এবং অ্যাপটি অগ্রভাগে থাকে। বর্তমানে, এটি কেবল প্রাপ্ত বার্তাটি লগ করে।
  • এছাড়াও, AndroidManifest.xml এ, StockNewsApplication নামে একটি অ্যান্ড্রয়েড Application ক্লাসও দেওয়া হয়েছে। a4982a8731492dfc.pngccde692f7f68dc5a.png
    • অ্যাপটি শুরু হলে এই ক্লাসটিই প্রথম হবে যাকে ইনস্ট্যান্ট করা হবে।
    • StockNewsApplication ক্লাসের onCreate ফাংশনে, একটি FCM রেজিস্ট্রেশন টোকেন তৈরি কল যোগ করা হয়েছে। এটি একটি বৈধ FCM রেজিস্ট্রেশন টোকেন তৈরি করবে এবং এটি লগ করবে।
  • MainActivity.java RecyclerView যোগ করে যা স্টক ক্যাটাগরি পছন্দগুলি প্রদর্শন করে।
  • SubscriptionAdapter.java RecyclerView.Adapter প্রয়োগ করে যা স্টক বিভাগ নির্বাচনের স্ক্রীন আঁকে।
    • প্রতিটি স্টক বিভাগের একটি নাম এবং এর পাশে একটি সাবস্ক্রিপশন টগল রয়েছে৷
    • টগল পরিবর্তন করলে একটি FCM বিষয় সদস্যতা/আনসাবস্ক্রিপশন কল করা উচিত।
    • আপনি আসন্ন বিভাগে এই কলগুলি বাস্তবায়ন করবেন।
  • model/StockCategories.java ক্লাসে সমস্ত স্টক বিভাগ এবং তাদের সংশ্লিষ্ট বিষয়ের নামগুলির একটি তালিকা রয়েছে।

b32663ec4e865a18.png

স্টার্টার অ্যাপটি চালান

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

5b27fc5b237e06b9.png

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

ff5b1a1c53231c54.png

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

927eb66bc909f36b.png

5. একটি পরীক্ষা বার্তা পাঠান

এখন আপনি শেষ ধাপে যে অ্যাপটি সেট আপ করেছিলেন সেটিতে একটি পরীক্ষার বার্তা পাঠাতে প্রস্তুত৷

স্টার্টার সার্ভার কোড আমদানি করুন

IntelliJ IDEA শুরু করুন এবং messaging/fcm-topics-codelab/starter/StockNewsServer প্রকল্প খুলুন।

আপনার বাম নেভিগেশন বারে প্রজেক্ট ভিউ, এইরকম দেখতে হবে:

da20711f6527dff6.png

দ্রষ্টব্য, প্রয়োজনীয় নির্ভরতা টেনে নিয়ে আপনার প্রকল্প তৈরি করতে IntellIj IDEA-এর জন্য কয়েক মিনিট সময় লাগতে পারে।

সার্ভার স্টার্টার কোড বুঝুন

  • সার্ভার স্টার্টার কোড একটি গ্রেডল-ভিত্তিক জাভা প্রকল্প।
  • build.gradle ফাইলটিতে ইতিমধ্যেই Firebase-admin SDK- এর উপর নির্ভরতা যুক্ত হয়েছে। এই SDK বিভিন্ন FCM বার্তা প্রেরণ কার্যকারিতা অ্যাক্সেস প্রদান করে।

650fc733298588f8.png

  • অবশেষে, দুটি শ্রেণী রয়েছে, যেমন:
    • FcmSender.java : এই ক্লাসে নোট করার নিম্নলিখিত পদ্ধতি রয়েছে:
      • initFirebaseSDK : ফায়ারবেস-অ্যাডমিন SDK শুরু করে।
      • sendMessageToFcmRegistrationToken : একটি FCM রেজিস্ট্রেশন টোকেনে একটি বার্তা পাঠান।
      • sendMessageToFcmTopic : একটি FCM বিষয়ে একটি বার্তা পাঠান।
      • sendMessageToFcmTopicCondition : একটি FCM বিষয় শর্তে একটি বার্তা পাঠান।
    • FcmSubscriptionManager.java : এই ক্লাসে এমন পদ্ধতি রয়েছে যা সার্ভারের দিক থেকে বিষয় সাবস্ক্রিপশন পরিচালনা করার অনুমতি দেয়।
      • initFirebaseSDK : ফায়ারবেস-অ্যাডমিন SDK শুরু করে।
      • subscribeFcmRegistrationTokensToTopic : একটি FCM বিষয়ে FCM নিবন্ধন টোকেন(গুলি) সাবস্ক্রাইব করুন।
      • unsubscribeFcmRegistrationTokensFromTopic : একটি FCM বিষয় থেকে FCM রেজিস্ট্রেশন টোকেন(গুলি) আনসাবস্ক্রাইব করুন।

সার্ভার কোড সেট আপ করা হচ্ছে

  1. প্রথমে, আমাদের একটি Firebase পরিষেবা অ্যাকাউন্ট সেট আপ করতে হবে যা firebase-admin SDK-কে FCM API-তে কল অনুমোদন করতে দেয়৷
    1. ফায়ারবেস কনসোলে যান, বাম নেভিগেশন বারে প্রজেক্ট ওভারভিউ- এর পাশে গিয়ার আইকনে ক্লিক করুন এবং প্রজেক্ট সেটিংস নির্বাচন করুন। 8c2108d4d7c915e9.png
    2. সেটিংস পৃষ্ঠায়, পরিষেবা অ্যাকাউন্ট নির্বাচন করুন এবং পরিষেবা অ্যাকাউন্ট তৈরি করুন ক্লিক করুন। 84b128cc5dac0a85.png
    3. এখন জেনারেট নিউ প্রাইভেট কী বোতামে ক্লিক করুন এবং আপনার কী ফাইলের একটি স্বয়ংক্রিয় ডাউনলোড শুরু হবে।
    4. কী ফাইলটির নাম service-account.json এ পুনঃনামকরণ করুন এবং এটিকে messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources ফোল্ডারে অনুলিপি করুন।
    5. FcmSender.java এবং FcmSubscriptionManager.java উভয়ই নিম্নলিখিত কোড ব্যবহার করে classpath থেকে service-account.json ফাইল লোড করে। 8dffbee658e0bdd.png
  2. এই মুহুর্তে, সার্ভার কোড প্রস্তুত। উপরের মেনু বার থেকে Build -> Build Project চালান।

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

  1. FcmSender.javasendMessageToFcmRegistrationToken ফাংশনটি সনাক্ত করুন এবং আপনি যে FCM রেজিস্ট্রেশন টোকেনটি অনুলিপি করেছেন তা স্টার্টার অ্যাপ সেকশন থেকে registrationToken ফিল্ডে প্রবেশ করান৷
  2. main ফাংশনে, শুধুমাত্র sendMessageToFcmRegistrationToken ফাংশনটি আনকমেন্ট করুন এবং কোডটি কার্যকর করতে রান ক্লিক করুন।
    1. message অবজেক্টের Token ক্ষেত্রে FCM রেজিস্ট্রেশন টোকেন কীভাবে সেট করা হয়েছে তা পর্যবেক্ষণ করুন।
    2. উপরন্তু, লক্ষ্য করুন কিভাবে আমরা FirebaseMessaging ইন্টারফেসের send API ব্যবহার করেছি।

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

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

31203deca59c03fe.png

অসাধারণ, আপনি একটি অ্যাপ ইনস্ট্যান্সে বার্তা পাঠাতে Firebase অ্যাডমিন SDK ব্যবহার করেছেন। আপনার সার্ভারে Firebase অ্যাডমিন SDK ব্যবহার সম্পর্কে আরও পড়ুন।

6. বিষয় সাবস্ক্রিপশন/আনসাবস্ক্রিপশন বাস্তবায়ন করুন

এই ধাপে আপনি অ্যান্ড্রয়েড অ্যাপের স্টক ক্যাটাগরি টগলে টপিক সাবস্ক্রিপশন এবং আনসাবস্ক্রিপশন অ্যাকশন বাস্তবায়ন করবেন।

যখন কোনও অ্যাপ ব্যবহারকারী একটি নির্দিষ্ট স্টক বিভাগের জন্য সুইচটি টগল করেন, তখন একটি বিষয় সাবস্ক্রিপশন বা আনসাবস্ক্রিপশন কল করা হবে।

কোড পর্যালোচনা করুন

  • অ্যান্ড্রয়েড অ্যাপ কোডে SubscriptionAdapter.java ক্লাসে নেভিগেট করুন এবং RecyclerViewViewHolder ক্লাসটি খুঁজুন।

6c0614199e684f6.png

  • ক্লাস কনস্ট্রাক্টর setOnCheckedChangeListener ব্যবহার করে সাবস্ক্রিপশন টগলের জন্য একজন শ্রোতা সেট আপ করে।
  • সুইচ টগলের উপর নির্ভর করে, যথাক্রমে subscribeToStockCategory এবং unsubscribeFromStockCategory পদ্ধতিতে কল করে সাবস্ক্রাইব এবং আনসাবস্ক্রাইব ক্রিয়া করা হয়।
  • setData পদ্ধতিটি রিসাইক্লারভিউ অ্যাডাপ্টারের onBindViewHolder দ্বারা উপযুক্ত স্টক বিভাগের সাথে ভিউহোল্ডারকে আবদ্ধ করার জন্য কল করা হয়।

বিষয় সদস্যতা বাস্তবায়ন

  1. subscribeToStockCategory পদ্ধতিতে, আপনি FirebaseMessaging অবজেক্টের subscribeToTopic API-তে কলটি বাস্তবায়ন করবেন। কোড এই মত কিছু দেখতে পারে:
   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();
          });
    }

বিষয় আনসাবস্ক্রিপশন বাস্তবায়ন

  1. একইভাবে, অন্য অবস্থায়, আপনি 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();
          });
    }

এর চেষ্টা করা যাক

  1. অ্যাপটি চালান এবং সাবস্ক্রাইব এবং আনসাবস্ক্রাইব অ্যাকশন চালানোর জন্য স্টক ক্যাটাগরি বিকল্পগুলি টগল করুন। এটা এই মত কিছু দেখতে হবে:

সাবস্ক্রাইব

সদস্যতা ত্যাগ করুন

7. আপনার প্রথম বিষয় বার্তা পাঠানো হচ্ছে

এই ধাপে আপনি একটি FCM বিষয় বার্তা পাঠাতে সার্ভার সাইড কোড প্রয়োগ করবেন।

বিষয় বার্তা পাঠানোর জন্য সার্ভার সাইড ইন্টিগ্রেশন বাস্তবায়ন

  1. সার্ভার কোডে, FcmSender.java এ যান এবং sendMessageToFcmTopic নামের পদ্ধতিটি সনাক্ত করুন।

56381dd1b40cde9c.png

  1. প্রথম লাইনে, আপনি যে FCM বিষয়কে বার্তা পাঠাতে চান সেটি প্রদান করুন।
    • এটি ফর্মের একটি স্ট্রিং: /topics/<Topic Name> । উদাহরণস্বরূপ, /topics/Technology
  2. পরবর্তী লাইনগুলিতে একটি নতুন 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();
  1. এখন বার্তা পাঠাতে FirebaseMessaging ইন্সট্যান্সে কল যোগ করুন ( sendMessageToFcmRegistrationToken ফাংশনে করা সেন্ড কলের অনুরূপ)।
FirebaseMessaging.getInstance().send(message);
  1. অবশেষে, main ফাংশন আপডেট করুন এবং কলটি শুধুমাত্র sendMessageToFcmTopic ফাংশনে সক্ষম করুন।

9a6aa08dd7c28898.png

বার্তা পাঠান এবং রসিদ যাচাই করুন

  1. টপিক মেসেজ পাঠানোর আগে, প্রথমে নিশ্চিত করুন যে আপনার অ্যাপ ইনস্ট্যান্সটি আপনি যে বিষয়ে পাঠাতে চান সেটিতে সদস্যতা নেওয়া হয়েছে।
    1. এটি সংশ্লিষ্ট টগলের একটি ফ্লিপ দিয়ে করা যেতে পারে। উদাহরণ স্বরূপ:
    4668247408377712.png
  2. আপনি এখন FcmSender.java এর main ফাংশনটি সম্পাদন করে আপনার বিষয় বার্তা পাঠাতে পারেন।
  3. আগের মতো আপনি অ্যাপ ইনস্ট্যান্সে বার্তা রসিদ পর্যবেক্ষণ করতে সক্ষম হবেন।
    1. অগ্রভাগে অ্যাপের উদাহরণ
    c144721399f610fe.png
    1. ব্যাকগ্রাউন্ডে অ্যাপের উদাহরণ
    44efc7dfd57e8e9a.png
  4. বোনাস: আপনার পাঠানো বিষয়ের সদস্যতা ত্যাগ করার চেষ্টা করুন এবং বার্তাটি পুনরায় পাঠান। আপনি লক্ষ্য করবেন যে অ্যাপ ইনস্ট্যান্সে বার্তাটি বিতরণ করা হচ্ছে না।

8. আপনার প্রথম বিষয় শর্ত বার্তা পাঠানো হচ্ছে

টপিক কন্ডিশন ফিচার আপনাকে বিষয়ের সংমিশ্রণে বার্তা পাঠাতে দেয় যা আপনাকে আরও অভিব্যক্তিপূর্ণ শ্রোতা সংজ্ঞা প্রদান করতে সক্ষম করে।

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

বিষয়গুলি আপনাকে নিম্নলিখিত অপারেটরগুলি ব্যবহার করে একটি বুলিয়ান এক্সপ্রেশন আকারে আপনার সংমিশ্রণ প্রকাশ করতে দেয়

  • && : যৌক্তিক এবং। উদাহরণ স্বরূপ, 'Technology' in topics && 'Automotive' in topics - শুধুমাত্র সেই অ্যাপ দৃষ্টান্তগুলিকে লক্ষ্য করে যেগুলি প্রযুক্তি এবং স্বয়ংচালিত বিষয় উভয়েই সদস্যতা নিয়েছে৷
  • || : যৌক্তিক বা. উদাহরণস্বরূপ, 'Technology' in topics || 'Automotive' in topics - প্রযুক্তি বা স্বয়ংচালিত বিষয়গুলিতে সদস্যতা নেওয়া অ্যাপের দৃষ্টান্তগুলিকে লক্ষ্য করে৷
  • (): গ্রুপিং জন্য বন্ধনী. উদাহরণ স্বরূপ, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - কেবলমাত্র প্রযুক্তিতে সদস্যতা নেওয়া অ্যাপের দৃষ্টান্তগুলি এবং হয় স্বয়ংচালিত বা শক্তির বিষয়গুলিকে লক্ষ্য করে৷

এই কার্যকারিতা ব্যবহার করার জন্য অনুরোধ পাঠান কিভাবে নির্মাণ সম্পর্কে আরও পড়ুন.

বিষয় শর্ত বার্তা পাঠানোর জন্য সার্ভার সাইড ইন্টিগ্রেশন বাস্তবায়ন

  1. সার্ভার কোডে ফিরে, FcmSender.java এ যান এবং sendMessageToFcmTopicCondition নামের পদ্ধতিটি সনাক্ত করুন।

3719a86c274522cf.png

  1. প্রথম লাইনে, topicCondition ভেরিয়েবলের জন্য, আপনি যে বিষয়ে বার্তা পাঠাতে চান সেটি প্রদান করুন। আপনি এটি সেট করতে পারেন: 'Technology' in topics && 'Automotive' in topics
  2. পরবর্তী লাইনগুলিতে, একটি নতুন message অবজেক্ট তৈরি করুন ( sendMessageToFcmTopic ফাংশনে সংজ্ঞায়িত একটির অনুরূপ)।
    1. পার্থক্য হবে অবজেক্টের 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();
  1. এখন বার্তা পাঠানোর জন্য FirebaseMessaging ইন্সট্যান্সে কল যোগ করুন ( sendMessageToFcmTopic ফাংশনে করা সেন্ড কলের অনুরূপ)।
FirebaseMessaging.getInstance().send(message);
  1. অবশেষে, main ফাংশন আপডেট করুন এবং কলটি শুধুমাত্র sendMessageToFcmTopicCondition ফাংশনে সক্ষম করুন।

db9588d40d2a0da6.png

বার্তা পাঠান এবং রসিদ যাচাই করুন

  1. টপিক মেসেজ পাঠানোর আগে, প্রথমে নিশ্চিত করুন যে আপনার অ্যাপ ইন্সট্যান্স প্রযুক্তি এবং স্বয়ংচালিত উভয় বিষয়ে অ্যাপ ইনস্ট্যান্স সাবস্ক্রাইব করে নির্দিষ্ট বিষয় শর্ত পূরণ করে।
  2. আপনি এখন FcmSender.java এর main ফাংশনটি সম্পাদন করে আপনার বিষয় বার্তা পাঠাতে পারেন।
  3. আগের মত, আপনি অ্যাপ ইন্সট্যান্সে বার্তা রসিদ পর্যবেক্ষণ করতে সক্ষম হবেন।
    1. অগ্রভাগে অ্যাপের উদাহরণ
    6f612ace15aa6515.png
    1. ব্যাকগ্রাউন্ডে অ্যাপের উদাহরণ
    78044a56ac2359cb.png
  4. বোনাস: আপনি এখন প্রযুক্তি বিষয় থেকে সদস্যতা ত্যাগ করতে পারেন এবং বিষয় শর্ত বার্তা পুনরায় পাঠাতে পারেন। আপনার লক্ষ্য করা উচিত যে অ্যাপ ইনস্ট্যান্স দ্বারা বার্তাটি গৃহীত হয়নি।

9. রিক্যাপ

আপনি এই বিন্দু পর্যন্ত যা শিখেছেন তার একটি দ্রুত সংকলন করা যাক।

  • একটি অ্যাপ ইন্সট্যান্স থেকে কীভাবে একটি বিষয় সাবস্ক্রিপশন/আনসাবস্ক্রিপশন শুরু করবেন।
  • বিষয়টিতে একটি বার্তা পাঠানো এবং সাবস্ক্রাইব করা অ্যাপের দৃষ্টান্তগুলিতে রসিদ যাচাই করা।
  • একটি বিষয়ের শর্তে একটি বার্তা পাঠানো এবং শর্তটি সন্তুষ্ট করে এমন একটি অ্যাপ উদাহরণে রসিদ যাচাই করা।

পরবর্তী বিভাগে, আপনি কীভাবে ক্লায়েন্টের পক্ষ থেকে কল করার প্রয়োজন ছাড়াই বিষয়গুলিতে অ্যাপের ইন্সট্যান্স সাবস্ক্রাইব/আনসাবস্ক্রাইব করতে পারেন সে সম্পর্কে শিখবেন।

c0dc20655d392690.gif

10. সার্ভার সাইড থেকে বিষয় সাবস্ক্রিপশন পরিচালনা করুন

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

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

এই বিভাগে, আপনি শিখবেন কিভাবে ফায়ারবেস অ্যাডমিন SDK ব্যবহার করে সার্ভার সাইড থেকে কল করে একটি বিষয়ের FCM রেজিস্ট্রেশন টোকেনের একটি ব্যাচ সদস্যতা ও আনসাবস্ক্রাইব করতে হয়।

FCM বিষয়ে FCM রেজিস্ট্রেশন টোকেনের সার্ভার সাইড সাবস্ক্রিপশন প্রয়োগ করুন

  1. সার্ভার কোডে, FcmSubscriptionManager.java ক্লাসে যান। subscribeFcmRegistrationTokensToTopic নামের পদ্ধতিটি সনাক্ত করুন। আপনি এখানে subscribeToTopic API-এর কলটি বাস্তবায়ন করবেন।

5d5709e7b3cbcb04.png

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

সদস্যতা তৈরি করুন এবং বিষয় বার্তা পাঠান

  1. এই মুহুর্তে আপনি বিষয় সদস্যতা তৈরি করতে এবং এটিতে একটি বার্তা পাঠাতে প্রস্তুত।
  2. FcmSubscriptionManager.java ক্লাসের main ফাংশন চালান। এটি একটি বিষয় সাবস্ক্রিপশন তৈরি করবে।
  3. এখন, বার্তা পাঠাতে কোড সেট আপ করুন। আগের মতই,
    1. FcmSender.java এ, sendMessageToFcmTopic ফাংশন সনাক্ত করুন।
    2. topicName এনার্জি টপিকে সেট করুন, অর্থাৎ, /topics/Energy
    3. একটি Message অবজেক্ট তৈরি করুন এবং setTopic ব্যবহার করে বিষয়টিতে লক্ষ্য করুন।
    4. অবশেষে, শুধুমাত্র sendMessageToFcmTopic ফাংশন সক্রিয় করতে main পদ্ধতি আপডেট করুন।
  4. FcmSender.java এর main ফাংশনটি চালান। এটি আপনার অ্যাপ ইন্সট্যান্সে বার্তাটি পাঠাবে এবং আপনি এটিকে আপনার অ্যাপে নিম্নরূপ পর্যবেক্ষণ করতে পারেন।
    1. অগ্রভাগে অ্যাপের উদাহরণ
    40ab6cf71e0e4116.png
    1. ব্যাকগ্রাউন্ডে অ্যাপের উদাহরণ
    8fba81037198209e.png

FCM রেজিস্ট্রেশন টোকেন এর সার্ভার সাইড আনসাবস্ক্রিপশন FCM বিষয় প্রয়োগ করুন

  1. সার্ভার সাইড টপিক আনসাবস্ক্রিপশনের জন্য, এই unsubscribeFromTopic API ব্যবহার করুন। আপনি FcmSubscriptionManager.java ক্লাসের unsubscribeFcmRegistrationTokensFromTopic ফাংশনে প্রাসঙ্গিক কোড যোগ করবেন।

8d9e8ea9d34016bd.png

  1. সার্ভার সাইড আনসাবস্ক্রিপশন কোড প্রয়োগ করা এবং একটি বিষয় বার্তা পাঠিয়ে এর প্রভাব যাচাই করা, আপনার জন্য একটি অনুশীলন হিসাবে রেখে দেওয়া হয়েছে।

11. অভিনন্দন

অভিনন্দন আপনি সফলভাবে আপনার অ্যাপ ইন্সট্যান্সের সাবগ্রুপগুলিতে মাল্টিকাস্ট বার্তা পাঠাতে FCM বিষয়গুলি ব্যবহার করেছেন৷ এটি প্রাসঙ্গিক বিষয়বস্তু সহ আপনার ব্যবহারকারীদের কাছে সময়মত পৌঁছাতে আপনার ক্ষমতাকে সহজ করতে সাহায্য করবে৷

947def3eb33b1e4a.gif

এরপর কি?

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

রেফারেন্স ডক্স