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

Android 8.0 (API স্তর 26) থেকে শুরু করে, সমস্ত বিজ্ঞপ্তি অবশ্যই একটি চ্যানেলে বরাদ্দ করা উচিত। প্রতিটি চ্যানেলের জন্য, আপনি চাক্ষুষ এবং শ্রুতিগত আচরণ সেট করতে পারেন যা সেই চ্যানেলের সমস্ত বিজ্ঞপ্তিতে প্রয়োগ করা হয়। ব্যবহারকারীরা এই সেটিংস পরিবর্তন করতে পারে এবং সিদ্ধান্ত নিতে পারে যে আপনার অ্যাপ থেকে কোন বিজ্ঞপ্তি চ্যানেলগুলি অনুপ্রবেশকারী বা দৃশ্যমান হতে পারে।

Android 8.0-এ চ্যানেল এবং অন্যান্য বিজ্ঞপ্তি বৈশিষ্ট্যগুলির একটি ওভারভিউয়ের জন্য নিম্নলিখিত ভিডিওটি দেখুন।

সিস্টেম সেটিংসে প্রতিটি অ্যাপের জন্য বিজ্ঞপ্তি চ্যানেলের ব্যবহারকারীর সেটিংস উপলব্ধ, যেমন চিত্র 1 এ দেখানো হয়েছে।

চিত্র 1. ঘড়ি অ্যাপ এবং এর চ্যানেলগুলির একটির জন্য বিজ্ঞপ্তি সেটিংস৷

আপনি একটি বিজ্ঞপ্তি চ্যানেল তৈরি করার পরে, আপনি বিজ্ঞপ্তি আচরণ পরিবর্তন করতে পারবেন না। ব্যবহারকারীর সেই মুহুর্তে সম্পূর্ণ নিয়ন্ত্রণ রয়েছে। যাইহোক, আপনি এখনও একটি চ্যানেলের নাম এবং বিবরণ পরিবর্তন করতে পারেন।

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

আপনি যখন Android 8.0 (API লেভেল 26) বা উচ্চতর টার্গেট করেন, তখন আপনাকে অবশ্যই এক বা একাধিক বিজ্ঞপ্তি চ্যানেল বাস্তবায়ন করতে হবে। আপনার targetSdkVersion 25 বা তার নিচে সেট করা থাকলে, যখন আপনার অ্যাপ Android 8.0 (API লেভেল 26) বা তার উপরে চলে, তখন এটি Android 7.1 (API লেভেল 25) বা তার নিচের ডিভাইসে চালিত ডিভাইসের মতোই আচরণ করে।

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

একটি বিজ্ঞপ্তি চ্যানেল তৈরি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  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)
}

জাভা

private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is not in the Support Library.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        // Register the channel with the system. You can't change the importance
        // or other notification behaviors after this.
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

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

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

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

আপনি createNotificationChannels() কল করে একটি একক অপারেশনে একাধিক বিজ্ঞপ্তি চ্যানেল তৈরি করতে পারেন।

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

চ্যানেলের গুরুত্ব চ্যানেলে পোস্ট করা সমস্ত বিজ্ঞপ্তির বাধা স্তরকে প্রভাবিত করে। IMPORTANCE_NONE(0) থেকে IMPORTANCE_HIGH(4) পর্যন্ত পাঁচটি গুরুত্ব স্তরের একটি ব্যবহার করে NotificationChannel কনস্ট্রাক্টরে এটি নির্দিষ্ট করুন৷

Android 7.1 (API লেভেল 25) বা তার নিচে চলমান ডিভাইসগুলিকে সমর্থন করতে, আপনাকে অবশ্যই NotificationCompat ক্লাস থেকে একটি অগ্রাধিকার ধ্রুবক ব্যবহার করে প্রতিটি বিজ্ঞপ্তির জন্য setPriority() কল করতে হবে।

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

ব্যবহারকারী-দৃশ্যমান গুরুত্ব স্তর গুরুত্ব (Android 8.0 এবং উচ্চতর) অগ্রাধিকার (Android 7.1 এবং নিম্ন)
জরুরী
একটি শব্দ তৈরি করে এবং একটি হেড-আপ বিজ্ঞপ্তি হিসাবে উপস্থিত হয়৷
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)

জাভা

Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
intent.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)

জাভা

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

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

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

চিত্র 2. ব্যক্তিগত এবং কাজের অ্যাকাউন্টগুলির জন্য গোষ্ঠীগুলির সাথে বিজ্ঞপ্তি চ্যানেল সেটিংস৷

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

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

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

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

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

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

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

প্রতিটি অ্যাকাউন্টের জন্য বিজ্ঞপ্তি চ্যানেলগুলিকে গোষ্ঠীগুলিতে সংগঠিত করা ব্যবহারকারীদের তাদের মধ্যে পার্থক্য করতে দেয়৷

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

কোটলিন

// 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
notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))

জাভা

// The id of the group.
String groupId = "my_group_01";
// The user-visible name of the group.
CharSequence groupName = getString(R.string.group_name);
NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannelGroup(new NotificationChannelGroup(groupId, groupName));

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

একবার আপনি বিজ্ঞপ্তি পরিচালকের কাছে চ্যানেলটি জমা দিলে, আপনি বিজ্ঞপ্তি চ্যানেল এবং গোষ্ঠীর মধ্যে সম্পর্ক পরিবর্তন করতে পারবেন না।