বিজ্ঞপ্তি চ্যানেল তৈরি এবং পরিচালনা করুন

অ্যান্ড্রয়েড ৮.০ (এপিআই লেভেল ২৬) থেকে, সমস্ত নোটিফিকেশনকে অবশ্যই একটি চ্যানেলে বরাদ্দ করতে হবে। প্রতিটি চ্যানেলের জন্য, আপনি সেই চ্যানেলের সমস্ত নোটিফিকেশনের ক্ষেত্রে প্রযোজ্য দৃশ্যমান এবং শ্রবণযোগ্য আচরণ নির্ধারণ করতে পারেন। ব্যবহারকারীরা এই সেটিংস পরিবর্তন করতে পারেন এবং সিদ্ধান্ত নিতে পারেন যে আপনার অ্যাপের কোন নোটিফিকেশন চ্যানেলগুলো অনাকাঙ্ক্ষিত বা দৃশ্যমান হবে।

অ্যান্ড্রয়েড ৮.০-এর চ্যানেল এবং অন্যান্য নোটিফিকেশন ফিচার সম্পর্কে বিস্তারিত জানতে নিচের ভিডিওটি দেখুন।

চিত্র ১-এ দেখানো অনুযায়ী, সিস্টেম সেটিংসে প্রতিটি অ্যাপের জন্য নোটিফিকেশন চ্যানেলের ব্যবহারকারী সেটিংস পাওয়া যায়।

চিত্র ১. ক্লক অ্যাপ এবং এর একটি চ্যানেলের নোটিফিকেশন সেটিংস।

একটি নোটিফিকেশন চ্যানেল তৈরি করার পর, আপনি এর নোটিফিকেশন আচরণ পরিবর্তন করতে পারবেন না। সেই মুহূর্তে ব্যবহারকারীর হাতে সম্পূর্ণ নিয়ন্ত্রণ থাকে। তবে, আপনি চ্যানেলের নাম এবং বিবরণ পরিবর্তন করতে পারবেন।

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

আপনি যখন অ্যান্ড্রয়েড ৮.০ (এপিআই লেভেল ২৬) বা তার উচ্চতর সংস্করণকে টার্গেট করবেন, তখন আপনাকে অবশ্যই এক বা একাধিক নোটিফিকেশন চ্যানেল ইমপ্লিমেন্ট করতে হবে। যদি আপনার targetSdkVersion ২৫ বা তার কম সেট করা থাকে, তাহলে আপনার অ্যাপটি অ্যান্ড্রয়েড ৮.০ (এপিআই লেভেল ২৬) বা তার উচ্চতর সংস্করণে চললে, এটি অ্যান্ড্রয়েড ৭.১ (এপিআই লেভেল ২৫) বা তার নিম্নতর সংস্করণে চালিত ডিভাইসগুলোর মতোই আচরণ করবে।

একটি নোটিফিকেশন চ্যানেল তৈরি করুন

একটি নোটিফিকেশন চ্যানেল তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:

  1. একটি অনন্য চ্যানেল আইডি, ব্যবহারকারীর কাছে দৃশ্যমান নাম এবং গুরুত্বের স্তর সহ একটি NotificationChannel অবজেক্ট তৈরি করুন।

  2. ঐচ্ছিকভাবে, setDescription() ব্যবহার করে সিস্টেম সেটিংসে ব্যবহারকারী যে বিবরণটি দেখতে পাবে তা নির্দিষ্ট করুন।

  3. createNotificationChannel() ফাংশনে নোটিফিকেশন চ্যানেলটি পাস করে রেজিস্টার করুন।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি নোটিফিকেশন চ্যানেল তৈরি এবং নিবন্ধন করতে হয়:

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
      // Create the NotificationChannel.
      val name = getString(R.string.channel_name)
      val descriptionText = getString(R.string.channel_description)
      val importance = NotificationManager.IMPORTANCE_DEFAULT
      val mChannel = NotificationChannel(CHANNEL_ID, name, importance)
      mChannel.description = descriptionText
      // Register the channel with the system. You can't change the importance
      // or other notification behaviors after this.
      val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
      notificationManager.createNotificationChannel(mChannel)
  }

বিদ্যমান কোনো নোটিফিকেশন চ্যানেলকে তার মূল মানগুলো দিয়ে পুনরায় তৈরি করলে কোনো অপারেশন সম্পাদিত হয় না, তাই অ্যাপ চালু করার সময় এই কোডটি কল করা নিরাপদ।

ডিফল্টরূপে, একটি নির্দিষ্ট চ্যানেলে পোস্ট করা সমস্ত নোটিফিকেশন NotificationManagerCompat ক্লাসের গুরুত্বের স্তর (যেমন IMPORTANCE_DEFAULT বা IMPORTANCE_HIGH ) দ্বারা সংজ্ঞায়িত দৃশ্যমান এবং শ্রবণযোগ্য বৈশিষ্ট্যগুলো ব্যবহার করে। গুরুত্বের স্তর সম্পর্কে আরও তথ্যের জন্য পরবর্তী বিভাগটি দেখুন।

আপনি যদি আপনার চ্যানেলের ডিফল্ট নোটিফিকেশন আচরণ আরও কাস্টমাইজ করতে চান, তাহলে আপনি NotificationChannelenableLights() , setLightColor() , এবং setVibrationPattern() এর মতো মেথডগুলো কল করতে পারেন। মনে রাখবেন যে, একবার চ্যানেল তৈরি হয়ে গেলে আপনি এই সেটিংসগুলো পরিবর্তন করতে পারবেন না এবং এই আচরণগুলো সক্রিয় থাকবে কিনা, সে বিষয়ে ব্যবহারকারীরই চূড়ান্ত নিয়ন্ত্রণ থাকে।

এছাড়াও আপনি createNotificationChannels() কল করে একটি অপারেশনেই একাধিক নোটিফিকেশন চ্যানেল তৈরি করতে পারেন।

গুরুত্বের স্তর নির্ধারণ করুন

চ্যানেলের গুরুত্ব সেই চ্যানেলে পোস্ট করা সমস্ত নোটিফিকেশনের বাধা দেওয়ার স্তরকে প্রভাবিত করে। NotificationChannel কনস্ট্রাক্টরে, IMPORTANCE_NONE(0) থেকে IMPORTANCE_HIGH(4) পর্যন্ত পাঁচটি গুরুত্বের স্তরের মধ্যে একটি ব্যবহার করে এটি নির্দিষ্ট করুন।

অ্যান্ড্রয়েড ৭.১ (এপিআই লেভেল ২৫) বা তার নিচের সংস্করণে চালিত ডিভাইসগুলোকে সমর্থন করার জন্য, আপনাকে অবশ্যই প্রতিটি নোটিফিকেশনের জন্য NotificationCompat ক্লাসের একটি priority কনস্ট্যান্ট ব্যবহার করে setPriority() কল করতে হবে।

গুরুত্ব ( NotificationManager.IMPORTANCE_* ) এবং অগ্রাধিকার ( NotificationCompat.PRIORITY_* ) কনস্ট্যান্টগুলো ব্যবহারকারীর কাছে দৃশ্যমান গুরুত্বের অপশনগুলোকে নির্দেশ করে, যা নিচের টেবিলে দেখানো হয়েছে।

ব্যবহারকারীর কাছে দৃশ্যমান গুরুত্বের স্তর গুরুত্ব (অ্যান্ড্রয়েড ৮.০ এবং উচ্চতর সংস্করণ) অগ্রাধিকার (অ্যান্ড্রয়েড ৭.১ এবং তার নিচের সংস্করণ)
জরুরি
একটি শব্দ করে এবং একটি পূর্বসতর্কতামূলক বিজ্ঞপ্তি হিসেবে প্রদর্শিত হয়।
IMPORTANCE_HIGH PRIORITY_HIGH অথবা PRIORITY_MAX
উচ্চ
শব্দ করে।
IMPORTANCE_DEFAULT PRIORITY_DEFAULT
মাঝারি
কোনো শব্দ করে না।
IMPORTANCE_LOW PRIORITY_LOW
নিম্ন
কোনো শব্দ হয় না এবং স্ট্যাটাস বারেও দেখা যায় না।
IMPORTANCE_MIN PRIORITY_MIN
কোনোটিই না
কোনো শব্দ করে না এবং স্ট্যাটাস বার বা শেডে প্রদর্শিত হয় না।
IMPORTANCE_NONE N/A

গুরুত্ব নির্বিশেষে সমস্ত নোটিফিকেশন সিস্টেম UI-এর এমন জায়গায় প্রদর্শিত হয় যা সিস্টেমে কোনো ব্যাঘাত ঘটায় না, যেমন নোটিফিকেশন ড্রয়ারে এবং লঞ্চার আইকনের উপর একটি ব্যাজ হিসেবে; তবে আপনি নোটিফিকেশন ব্যাজটির চেহারা পরিবর্তন করতে পারেন।

একবার আপনি NotificationManager চ্যানেলটি জমা দিলে, এর গুরুত্বের স্তর আর পরিবর্তন করতে পারবেন না। তবে, ব্যবহারকারী যেকোনো সময় আপনার অ্যাপের চ্যানেলগুলোর জন্য তাদের পছন্দ পরিবর্তন করতে পারেন।

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

বিজ্ঞপ্তি চ্যানেল সেটিংস পড়ুন

ব্যবহারকারীরা নোটিফিকেশন চ্যানেলের সেটিংস পরিবর্তন করতে পারেন, যার মধ্যে ভাইব্রেশন এবং অ্যালার্ট সাউন্ডের মতো বৈশিষ্ট্যগুলোও অন্তর্ভুক্ত। কোনো ব্যবহারকারী আপনার নোটিফিকেশন চ্যানেলগুলোতে কী কী সেটিংস প্রয়োগ করেছেন তা জানতে চাইলে, এই ধাপগুলো অনুসরণ করুন:

  1. getNotificationChannel() বা getNotificationChannels() কল করে NotificationChannel অবজেক্টটি পান।

  2. নির্দিষ্ট চ্যানেল সেটিংস যেমন getVibrationPattern() , getSound() , এবং getImportance() সম্পর্কে জিজ্ঞাসা করুন।

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

নোটিফিকেশন চ্যানেল সেটিংস খুলুন

একবার একটি নোটিফিকেশন চ্যানেল তৈরি করার পর, আপনি প্রোগ্রাম্যাটিকভাবে এর ভিজ্যুয়াল এবং অডিও আচরণ পরিবর্তন করতে পারবেন না। শুধুমাত্র ব্যবহারকারীই সিস্টেম সেটিংস থেকে চ্যানেলের আচরণ পরিবর্তন করতে পারেন। আপনার ব্যবহারকারীদের এই নোটিফিকেশন সেটিংসে দ্রুত অ্যাক্সেস দেওয়ার জন্য, আপনার অ্যাপের সেটিংস UI-তে এমন একটি আইটেম যোগ করুন যা এই সিস্টেম সেটিংসগুলো খুলে দেবে।

আপনি ACTION_CHANNEL_NOTIFICATION_SETTINGS অ্যাকশন ব্যবহার করে এমন একটি Intent মাধ্যমে নোটিফিকেশন চ্যানেলের জন্য সিস্টেম সেটিংস খুলতে পারেন।

উদাহরণস্বরূপ, নিম্নলিখিত নমুনা কোডটি দেখায় যে কীভাবে আপনি একজন ব্যবহারকারীকে একটি নোটিফিকেশন চ্যানেলের সেটিংসে পুনঃনির্দেশ করতে পারেন:

  val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply {
      putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
      putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId())
  }
  startActivity(intent)

লক্ষ্য করুন যে, ইন্টেন্টটির জন্য দুটি এক্সট্রা প্রয়োজন হয়, যেগুলোর মাধ্যমে আপনার অ্যাপের প্যাকেজ নেম (যা অ্যাপ্লিকেশন আইডি নামেও পরিচিত) এবং সম্পাদনা করার চ্যানেলটি নির্দিষ্ট করা হয়।

একটি নোটিফিকেশন চ্যানেল মুছে ফেলুন

আপনি deleteNotificationChannel() কল করে নোটিফিকেশন চ্যানেলগুলো ডিলিট করতে পারেন। নিচের নমুনা কোডটিতে দেখানো হয়েছে কিভাবে এই প্রক্রিয়াটি সম্পন্ন করতে হয়:

  // The id of the channel.
  val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
  val id: String = "my_channel_01"
  notificationManager.deleteNotificationChannel(id)

একটি নোটিফিকেশন চ্যানেল গ্রুপ তৈরি করুন

সেটিংস UI-তে আপনার চ্যানেলগুলোর চেহারা আরও সুসংগঠিত করতে চাইলে, আপনি চ্যানেল গ্রুপ তৈরি করতে পারেন। আপনার অ্যাপ একাধিক ব্যবহারকারী অ্যাকাউন্ট সমর্থন করলে এটি একটি ভালো উপায়, কারণ এর মাধ্যমে আপনি প্রতিটি অ্যাকাউন্টের জন্য একটি করে নোটিফিকেশন চ্যানেল গ্রুপ তৈরি করতে পারেন। চ্যানেল গ্রুপগুলো ব্যবহারকারীদের একই নামের একাধিক নোটিফিকেশন চ্যানেলকে আলাদা করতে এবং নিয়ন্ত্রণ করতে সাহায্য করে।

চিত্র ২. ব্যক্তিগত এবং কর্মক্ষেত্রের অ্যাকাউন্টের জন্য গ্রুপসহ নোটিফিকেশন চ্যানেল সেটিংস।

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

  • দুটি চ্যানেল সহ একটি ব্যক্তিগত অ্যাকাউন্ট:

    • নতুন মন্তব্য

    • সুপারিশ পোস্ট করুন

  • দুটি চ্যানেল সহ একটি ব্যবসায়িক অ্যাকাউন্ট:

    • নতুন মন্তব্য

    • সুপারিশ পোস্ট করুন

প্রতিটি অ্যাকাউন্টের জন্য নোটিফিকেশন চ্যানেলগুলোকে বিভিন্ন গ্রুপে ভাগ করলে ব্যবহারকারীরা সেগুলোর মধ্যে পার্থক্য করতে পারেন।

প্রতিটি নোটিফিকেশন চ্যানেল গ্রুপের জন্য একটি আইডি প্রয়োজন, যা আপনার প্যাকেজের মধ্যে অবশ্যই অনন্য হতে হবে, এবং এর সাথে একটি ব্যবহারকারী-দৃশ্যমান নামও প্রয়োজন। নিম্নলিখিত কোড স্নিপেটটিতে দেখানো হয়েছে কীভাবে একটি নোটিফিকেশন চ্যানেল গ্রুপ তৈরি করতে হয়।

  // The id of the group.
  val groupId = "my_group_01"
  // The user-visible name of the group.
  val groupName = getString(R.string.group_name)
  val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
  <b>notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))</b>

নতুন গ্রুপ তৈরি করার পরে, আপনি setGroup() কল করে গ্রুপটির সাথে একটি নতুন NotificationChannel অবজেক্ট যুক্ত করতে পারেন।

একবার নোটিফিকেশন ম্যানেজারে চ্যানেলটি জমা দিলে, আপনি নোটিফিকেশন চ্যানেল এবং গ্রুপের মধ্যেকার সংযোগ পরিবর্তন করতে পারবেন না।