সাধারণত, একটি প্রাথমিক বিজ্ঞপ্তিতে একটি শীর্ষক, এক লাইন টেক্সট এবং ব্যবহারকারী প্রতিক্রিয়া হিসেবে যেসব অ্যাকশন নিতে পারেন সেগুলি অন্তর্ভুক্ত থাকে। আরও তথ্য প্রদান করতে, আপনি এই ডকুমেন্টে বর্ণিত একাধিক বিজ্ঞপ্তি টেমপ্লেটের মধ্যে একটি প্রয়োগ করে বড়, এক্সপ্যান্ড করা যায় এমন বিজ্ঞপ্তি তৈরি করতে পারেন।
শুরু করতে, বিজ্ঞপ্তি তৈরি করুন নিবন্ধে বর্ণিত সমস্ত প্রাথমিক কন্টেন্ট সহ একটি বিজ্ঞপ্তি তৈরি করুন। তারপর, স্টাইল অবজেক্ট সহ 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()
নিচের ছবিতে দেখানো
মতো বিজ্ঞপ্তিটি লুকানো থাকলে, শুধুমাত্র তখনই ছবিটিকে থাম্বনেল হিসেবে দেখাতে, setLargeIcon()
কল করুন এবং এতে ছবিটি পাস করুন। তারপরে, কল
BigPictureStyle.bigLargeIcon()
করে null পাস করুন যাতে বিজ্ঞপ্তি
বড় হলে বড় আইকনটি আর দেখা না যায়:
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()
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() নম্বরে কল করতে পারেন। এটি গ্রুপের ব্যবহারকারীর তৈরি করা নাম হতে পারে অথবা এটির কোনও নির্দিষ্ট নাম না থাকলে,
কথোপথনে অংশগ্রহণকারীদের তালিকা হতে পারে।
এক-এক কথোপকথনের জন্য কোনও কথোপকথনের শীর্ষক সেট করবেন না, কারণ সিস্টেম এই ফিল্ডের
উপস্থিতিকে ইঙ্গিত হিসেবে ব্যবহার করে যে কথোপকথনটি একটি গ্রুপ।
এই স্টাইল শুধুমাত্র Android 7.0 (API লেভেল 24) ও তার পরের যেকোনও ভার্সনে চলে এমন ডিভাইসে প্রযোজ্য।
কম্প্যাটিবিলিটি লাইব্রেরি (NotificationCompat) ব্যবহার করার সময়, আগে
যেমন দেখানো হয়েছে, MessagingStyle ফল ব্যাক
সহ বিজ্ঞপ্তি অটোমেটিক কাজ করে এবং বিজ্ঞপ্তি দেখানোর উপযুক্ত এক্সপ্যান্ডেড স্টাইল ব্যবহার করে।
চ্যাট কথোপকথনের জন্য এই ধরনের বিজ্ঞপ্তি তৈরি করার সময়, সরাসরি উত্তর দেওয়ার অ্যাকশন যোগ করুন।
মিডিয়া কন্ট্রোল সহ বিজ্ঞপ্তি তৈরি করা
মিডিয়া প্লেব্যাক কন্ট্রোল ও ট্র্যাকের তথ্য দেখাতে MediaStyleNotificationHelper.MediaStyle প্রয়োগ করুন।
কনস্ট্রাক্টরে আপনার সংশ্লিষ্ট MediaSession নির্দিষ্ট করুন। এটি Android-কে
আপনার মিডিয়া সম্পর্কে সঠিক তথ্য দেখাতে দেয়।
সর্বাধিক পাঁচটি আইকন বোতাম দেখাতে 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 ও
এক্সপ্যান্ড করা যায় এমন বিজ্ঞপ্তি সম্পর্কে আরও জানতে, নিম্নলিখিত রেফারেন্স দেখুন।