সময়-সংবেদনশীল বিজ্ঞপ্তিগুলি প্রদর্শন করুন

কিছু নির্দিষ্ট পরিস্থিতিতে, যেমন চলমান অ্যালার্ম বা ইনকামিং কলের ক্ষেত্রে, আপনার অ্যাপের জরুরিভাবে ব্যবহারকারীর মনোযোগ আকর্ষণের প্রয়োজন হতে পারে। অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) বা তার নিচের সংস্করণে চালিত ডিভাইসগুলিতে, অ্যাপটি ব্যাকগ্রাউন্ডে থাকাকালীন একটি অ্যাক্টিভিটি চালু করার মাধ্যমে আপনি এই কাজটি করতে পারেন। এই ডকুমেন্টটিতে দেখানো হয়েছে কীভাবে অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) এবং তার উপরের সংস্করণে চালিত ডিভাইসগুলিতে এই আচরণটি অর্জন করা যায়।

POST_NOTIFICATIONS অনুমতি যোগ করুন

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) থেকে শুরু করে, আপনার AndroidManifest.xml ফাইলে POST_NOTIFICATIONS পারমিশনটি ঘোষণা করুন:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

অনুমতি ঘোষণা করার পর, একটি নোটিফিকেশন চ্যানেল তৈরি করুন।

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

নোটিফিকেশন প্রদর্শন করতে এবং সিস্টেম সেটিংসে ব্যবহারকারীদের নোটিফিকেশন ক্যাটাগরি পরিচালনা করার সুযোগ দিতে একটি নোটিফিকেশন চ্যানেল তৈরি করুন। নোটিফিকেশন চ্যানেল সম্পর্কে আরও তথ্যের জন্য, ‘নোটিফিকেশন চ্যানেল তৈরি ও পরিচালনা’ দেখুন।

আপনার Application ক্লাসের onCreate মেথডে নোটিফিকেশন চ্যানেলগুলো তৈরি করুন:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        val channel = NotificationChannel(
            CHANNEL_ID,
            "High priority notifications",
            NotificationManager.IMPORTANCE_HIGH
        )

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}

যখন ব্যবহারকারী প্রথমবার অ্যাপটি চালান, তখন সিস্টেমটি অ্যাপ তথ্য স্ক্রিনে চ্যানেলটি প্রদর্শন করে, যেমনটি চিত্র ১-এ দেখানো হয়েছে:

অ্যাপ ইনফো নোটিফিকেশন স্ক্রিনে তৈরি করা চ্যানেলটি প্রদর্শিত হচ্ছে।
চিত্র ১. অ্যাপের সিস্টেম সেটিংসের অ্যাপ ইনফো স্ক্রিনের নোটিফিকেশন সেকশন।

বিজ্ঞপ্তির অনুমতি পরিচালনা করুন

অ্যান্ড্রয়েড ১৩ থেকে, ব্যবহারকারীদের নোটিফিকেশন দেখানোর আগে নোটিফিকেশনের অনুমতি চেয়ে নিন।

নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে Jetpack Compose-এ রানটাইম নোটিফিকেশন অনুমতির জন্য অনুরোধ করতে হয়:

val permissionLauncher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission(),
    onResult = { hasNotificationPermission = it }
)
// ...
Button(
    onClick = {
        if (!hasNotificationPermission) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
            }
        }
    },
) {
    Text(text = "Request permission")
}

অ্যান্ড্রয়েড ১৩ এবং তার পরবর্তী সংস্করণ চালিত ডিভাইসগুলিতে, 'অনুমতির অনুরোধ' বোতামটি ট্যাপ করলে চিত্র ২-এ দেখানো সিস্টেম ডায়ালগটি প্রদর্শিত হয়:

সিস্টেম ডায়ালগ বক্সটি ব্যবহারকারীকে নোটিফিকেশনের অনুমতি দিতে অনুরোধ করে।
চিত্র ২. নোটিফিকেশন অনুমতি অনুরোধের জন্য সিস্টেম ডায়ালগ।

যখন ব্যবহারকারী অনুমতি প্রদান করেন, তখন সিস্টেম অ্যাপের তথ্য স্ক্রিনটি আপডেট করে, যেমনটি চিত্র ৩-এ দেখানো হয়েছে:

অ্যাপ তথ্য স্ক্রিনটি প্রদত্ত নোটিফিকেশন অনুমতিগুলো দেখাচ্ছে।
চিত্র ৩. বিজ্ঞপ্তি প্রদানের অনুমতি দেওয়া হয়েছে।

একটি উচ্চ-অগ্রাধিকার বিজ্ঞপ্তি তৈরি করুন

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

নিম্নলিখিত কোড উদাহরণটি একটি উচ্চ-অগ্রাধিকারের নোটিফিকেশন কনফিগার এবং বিল্ড করে:

private fun showNotification() {
    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

    val notificationBuilder =
        NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.baseline_auto_awesome_24)
            .setContentTitle("HIGH PRIORITY")
            .setContentText("Check this dog puppy video NOW!")
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION)

    notificationManager.notify(0, notificationBuilder.build())
}

ব্যবহারকারীকে বিজ্ঞপ্তিটি প্রদর্শন করুন

showNotification ফাংশনটি কল করলে নোটিফিকেশনটি নিম্নরূপভাবে ট্রিগার হয়:

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

চিত্র ৪-এ সিস্টেম দ্বারা প্রদর্শিত উচ্চ-অগ্রাধিকারের নোটিফিকেশনটি দেখানো হয়েছে:

ডিভাইসটিতে একটি উচ্চ-অগ্রাধিকারের বিজ্ঞপ্তি প্রদর্শিত হয়েছে।
চিত্র ৪. একটি উচ্চ-অগ্রাধিকার বিজ্ঞপ্তি।

চলমান বিজ্ঞপ্তি

যখন আপনি ব্যবহারকারীকে আপনার নোটিফিকেশন দেখান, তখন তিনি আপনার অ্যাপের অ্যালার্ট বা রিমাইন্ডারটি গ্রহণ বা বাতিল করতে পারেন। উদাহরণস্বরূপ, ব্যবহারকারী একটি ইনকামিং ফোন কল গ্রহণ বা প্রত্যাখ্যান করতে পারেন।

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

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

লাইভ আপডেট ব্যবহার করার কথা বিবেচনা করুন

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