একটি প্রসারণযোগ্য বিজ্ঞপ্তি তৈরি করুন

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

শুরুতে, "একটি নোটিফিকেশন তৈরি করুন" অংশে বর্ণিত সমস্ত মৌলিক বিষয়বস্তু দিয়ে একটি নোটিফিকেশন তৈরি করুন। তারপর, একটি স্টাইল অবজেক্ট সহ setStyle() কল করুন এবং নিম্নলিখিত উদাহরণগুলিতে দেখানো অনুযায়ী প্রতিটি টেমপ্লেটের সাথে সম্পর্কিত তথ্য সরবরাহ করুন।

একটি বড় ছবি যোগ করুন

আপনার নোটিফিকেশনে একটি ছবি যোগ করতে, setStyle() ফাংশনে NotificationCompat.BigPictureStyle এর একটি ইনস্ট্যান্স পাস করুন।

var notification =
    NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(com.example.compose.snippets.R.drawable.ic_logo)
        .setContentTitle("Title")
        .setContentText("Content text")
        .setStyle(
            NotificationCompat.BigPictureStyle()
                .bigPicture(bitmapImage)
        )
        .build()

নিচের চিত্রে দেখানো অনুযায়ী, নোটিফিকেশনটি সংকুচিত (collapsed) থাকা অবস্থায় ছবিটিকে শুধু থাম্বনেইল হিসেবে দেখানোর জন্য, setLargeIcon() ফাংশনটি কল করুন এবং এতে ছবিটি পাস করুন। এরপর, BigPictureStyle.bigLargeIcon() কল করুন এবং এতে null পাস করুন, যাতে নোটিফিকেশনটি প্রসারিত (expanded) হলে বড় আইকনটি অদৃশ্য হয়ে যায়:

notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_logo)
    .setContentTitle("Title")
    .setContentText("Content text")
    .setLargeIcon(Icon.createWithResource(context, R.drawable.dog))
    .setStyle(
        NotificationCompat.BigPictureStyle()
            .bigPicture(bitmapImage)
            .bigLargeIcon(null as Bitmap?)
    )
    .build()

একটি সংকুচিত নোটিফিকেশন এবং একটি নীল ছবি সম্বলিত প্রসারিত নোটিফিকেশন
চিত্র ১. NotificationCompat.BigPictureStyle ব্যবহার করে তৈরি একটি নোটিফিকেশন।

একটি বড় টেক্সট ব্লক যোগ করুন

নোটিফিকেশনের প্রসারিত কন্টেন্ট এলাকায় টেক্সট প্রদর্শন করতে NotificationCompat.BigTextStyle প্রয়োগ করুন:

notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_logo)
    .setContentTitle("Sender name")
    .setContentText("Email subject")
    .setLargeIcon(Icon.createWithResource(context, R.drawable.dog))
    .setStyle(
        NotificationCompat.BigTextStyle()
            .bigText(someVeryLongMessage)
    )
    .build()

BigTextStyle ব্যবহার করে একটি সংকুচিত নোটিফিকেশন এবং একটি প্রসারিত নোটিফিকেশন
চিত্র ২. NotificationCompat.BigTextStyle ব্যবহার করে তৈরি একটি নোটিফিকেশন।

ইনবক্স-স্টাইলের নোটিফিকেশন তৈরি করুন

যদি আপনি একাধিক সংক্ষিপ্ত সারাংশ লাইন, যেমন আগত ইমেলের অংশবিশেষ, যোগ করতে চান, তাহলে একটি নোটিফিকেশনে NotificationCompat.InboxStyle প্রয়োগ করুন। এটি আপনাকে NotificationCompat.BigTextStyle দ্বারা প্রদত্ত একটি অবিচ্ছিন্ন টেক্সট লাইনের পরিবর্তে, একাধিক কন্টেন্ট টেক্সট যোগ করার সুযোগ দেয়, যার প্রতিটি এক লাইনে সংক্ষিপ্ত করা থাকে।

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

notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.mail)
    .setContentTitle("5 New mails from Frank")
    .setContentText("Check them out")
    .setLargeIcon(bitmapImage)
    .setStyle(
        NotificationCompat.InboxStyle()
            .addLine("Re: Planning")
            .addLine("Delivery on its way")
            .addLine("Follow-up")
    )
    .build()

ফলাফলটি নিচের চিত্রের মতো দেখতে:

একটি বর্ধিত ইনবক্স-শৈলীর বিজ্ঞপ্তি
চিত্র ৩. একটি বর্ধিত ইনবক্স-শৈলীর বিজ্ঞপ্তি।

একটি নোটিফিকেশনে কথোপকথন দেখান

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

নতুন বার্তা যোগ করতে, বার্তার টেক্সট, প্রাপ্তির সময় এবং প্রেরকের নাম উল্লেখ করে addMessage() কল করুন। এছাড়াও, আপনি এই তথ্যগুলো একটি NotificationCompat.MessagingStyle.Message অবজেক্ট হিসেবেও দিতে পারেন, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:

val message1 = NotificationCompat.MessagingStyle.Message(
    messages[0].text,
    messages[0].time,
    messages[0].sender
)
val message2 = NotificationCompat.MessagingStyle.Message(
    messages[1].text,
    messages[1].time,
    messages[1].sender
)
notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_logo)
    .setStyle(
        NotificationCompat.MessagingStyle(Person.Builder().setName("Me").build())
            .addMessage(message1)
            .addMessage(message2)
    )
    .build()

মেসেজিং স্টাইলে একটি বিজ্ঞপ্তি
চিত্র ৪. NotificationCompat.MessagingStyle ব্যবহার করে তৈরি একটি নোটিফিকেশন।

NotificationCompat.MessagingStyle ব্যবহার করার সময়, setContentTitle() এবং setContentText() এ দেওয়া যেকোনো মান উপেক্ষা করা হয়।

কথোপকথনের উপরে একটি শিরোনাম যোগ করতে আপনি setConversationTitle() কল করতে পারেন। এটি গ্রুপের ব্যবহারকারী-সৃষ্ট নাম হতে পারে অথবা, যদি এর কোনো নির্দিষ্ট নাম না থাকে, তবে কথোপকথনে অংশগ্রহণকারীদের একটি তালিকা হতে পারে। এক-একজনের চ্যাটের জন্য কথোপকথনের শিরোনাম সেট করবেন না, কারণ সিস্টেম এই ফিল্ডটির উপস্থিতিকে কথোপকথনটি একটি গ্রুপ হওয়ার ইঙ্গিত হিসেবে ব্যবহার করে।

এই স্টাইলটি শুধুমাত্র অ্যান্ড্রয়েড ৭.০ (এপিআই লেভেল ২৪) এবং তার পরবর্তী সংস্করণে চালিত ডিভাইসগুলিতে প্রযোজ্য। পূর্বে যেমন দেখানো হয়েছে, কম্প্যাটিবিলিটি লাইব্রেরি ( NotificationCompat ) ব্যবহার করার সময়, MessagingStyle যুক্ত নোটিফিকেশনগুলি স্বয়ংক্রিয়ভাবে একটি সমর্থিত এক্সপান্ডেড নোটিফিকেশন স্টাইলে ফিরে আসে।

কোনো চ্যাট কথোপকথনের জন্য এই ধরনের নোটিফিকেশন তৈরি করার সময়, একটি সরাসরি উত্তর দেওয়ার অ্যাকশন যোগ করুন

মিডিয়া কন্ট্রোল ব্যবহার করে একটি নোটিফিকেশন তৈরি করুন

মিডিয়া প্লেব্যাক কন্ট্রোল এবং ট্র্যাকের তথ্য প্রদর্শন করতে MediaStyleNotificationHelper.MediaStyle প্রয়োগ করুন।

কনস্ট্রাক্টরে আপনার সংশ্লিষ্ট MediaSession নির্দিষ্ট করুন। এর ফলে অ্যান্ড্রয়েড আপনার মিডিয়া সম্পর্কে সঠিক তথ্য প্রদর্শন করতে পারে।

সর্বোচ্চ পাঁচটি আইকন বাটন প্রদর্শন করতে addAction() পাঁচবার পর্যন্ত কল করুন। অ্যালবামের আর্টওয়ার্ক সেট করতে setLargeIcon() ফাংশনটি কল করুন।

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

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

notification = NotificationCompat.Builder(context, CHANNEL_ID)
    // Show controls on lock screen even when user hides sensitive content.
    .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
    .setSmallIcon(com.example.compose.snippets.R.drawable.play)
    // Add media control buttons that invoke intents in your media service
    .addAction(R.drawable.previous, "Previous", null /* Add valid intent */) // #0
    .addAction(R.drawable.pause, "Pause", null /* Add valid intent */) // #1
    .addAction(R.drawable.next, "Next", null /* Add valid intent */) // #2
    // Apply the media style template.
    .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession)
        .setShowActionsInCompactView(1 /* #1: pause button */))
    .setContentTitle("Wonderful music")
    .setContentText("My Awesome Band")
    .setLargeIcon(bitmapImage)
    .build()

মিডিয়া স্টাইল সহ একটি বিজ্ঞপ্তি
চিত্র ৫. MediaStyleNotificationHelper.MediaStyle ব্যবহার করে একটি নোটিফিকেশন।

অতিরিক্ত সম্পদ

MediaStyle এবং এক্সপ্যান্ডেবল নোটিফিকেশন সম্পর্কে আরও তথ্যের জন্য নিম্নলিখিত রেফারেন্সগুলি দেখুন।