การแจ้งเตือนขั้นพื้นฐานมักจะประกอบด้วยชื่อ บรรทัดข้อความ และการดำเนินการ ที่ผู้ใช้สามารถดำเนินการตอบสนอง หากต้องการข้อมูลเพิ่มเติม คุณสามารถสร้าง การแจ้งเตือนที่ขยายได้ โดยใช้หนึ่งในเทมเพลตการแจ้งเตือนหลายๆ แบบเป็น ตามที่อธิบายไว้ในเอกสารนี้
หากต้องการเริ่มต้น ให้สร้างการแจ้งเตือนที่มีเนื้อหาพื้นฐานทั้งหมดดังที่อธิบายไว้ใน
สร้างการแจ้งเตือน จากนั้นให้ทำดังนี้
โทร
setStyle()
ด้วยออบเจ็กต์รูปแบบและให้ข้อมูลที่เกี่ยวข้องกับแต่ละเทมเพลต
ที่แสดงในตัวอย่างต่อไปนี้
เพิ่มรูปภาพขนาดใหญ่
หากต้องการเพิ่มรูปภาพในการแจ้งเตือน ให้ส่งผ่านอินสแตนซ์
NotificationCompat.BigPictureStyle
ไปยัง setStyle()
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build();
เพื่อให้รูปภาพปรากฏเป็นภาพขนาดย่อเฉพาะในขณะที่มีการแจ้งเตือน
ยุบลงดังที่ปรากฏในรูปต่อไปนี้ เรียก
setLargeIcon()
แล้วส่งรูปภาพนั้น จากนั้นโทร
BigPictureStyle.bigLargeIcon()
แล้วส่ง null
เพื่อให้ไอคอนขนาดใหญ่หายไปเมื่อมีการแจ้งเตือน
ขยายแล้ว:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build();
เพิ่มข้อความบล็อกขนาดใหญ่
นำไปใช้
NotificationCompat.BigTextStyle
เพื่อแสดงข้อความในพื้นที่เนื้อหาแบบขยายของการแจ้งเตือน
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(new NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build();
สร้างการแจ้งเตือนรูปแบบกล่องจดหมาย
นำไปใช้
NotificationCompat.InboxStyle
ลงในการแจ้งเตือน หากต้องการเพิ่มบรรทัดสรุปสั้นๆ หลายบรรทัด เช่น
ตัวอย่างจากอีเมลขาเข้า ช่วยให้คุณเพิ่มข้อความเนื้อหาหลายส่วนได้
ที่แต่ละเส้นจะถูกตัดเหลือ 1 บรรทัด แทนที่จะเป็นบรรทัดเดียวที่ต่อเนื่องกันของข้อความ
โดย NotificationCompat.BigTextStyle
หากต้องการเพิ่มสายใหม่ โปรดโทร
addLine()
ได้สูงสุด 6 ครั้ง ดังที่แสดงในตัวอย่างต่อไปนี้ ถ้าคุณเพิ่มมากกว่าหกช่อง
ระบบจะแสดงเฉพาะ 6 บรรทัดแรกเท่านั้น
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build()
Java
Notification notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build();
ผลลัพธ์จะมีลักษณะเป็นรูปต่อไปนี้
แสดงการสนทนาในการแจ้งเตือน
นำไปใช้
NotificationCompat.MessagingStyle
เพื่อแสดงข้อความตามลำดับระหว่างผู้ใช้กี่รายก็ได้ เหมาะสำหรับ
แอปรับส่งข้อความ เนื่องจากแอปนี้มีรูปแบบที่สอดคล้องกัน
สำหรับข้อความแต่ละรายการโดย
การจัดการชื่อผู้ส่งและข้อความแยกต่างหาก และสามารถ
ยาวหลายบรรทัด
หากต้องการเพิ่มข้อความใหม่ ให้โทร
addMessage()
การส่ง SMS, เวลาที่ได้รับ และชื่อผู้ส่ง นอกจากนี้คุณยัง
ส่งต่อข้อมูลนี้ในรูปแบบ
NotificationCompat.MessagingStyle.Message
ตามที่แสดงในตัวอย่างต่อไปนี้
Kotlin
val message1 = NotificationCompat.MessagingStyle.Message( messages[0].getText(), messages[0].getTime(), messages[0].getSender()) val message2 = NotificationCompat.MessagingStyle.Message( messages[1].getText(), messages[1].getTime(), messages[1].getSender()) val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle( NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build()
Java
NotificationCompat.MessagingStyle.Message message1 = new NotificationCompat.MessagingStyle.Message(messages[0].getText(), messages[0].getTime(), messages[0].getSender()); NotificationCompat.MessagingStyle.Message message2 = new NotificationCompat.MessagingStyle.Message(messages[1].getText(), messages[1].getTime(), messages[1].getSender()); Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build();
เมื่อใช้ NotificationCompat.MessagingStyle
ค่าใดๆ ที่กำหนดไปยัง
setContentTitle()
และ
setContentText()
จะถูกละเว้น
คุณสามารถโทรหา
setConversationTitle()
เพื่อเพิ่มชื่อที่ปรากฏเหนือการสนทนา นี่อาจเป็น
ชื่อกลุ่มที่สร้างโดยผู้ใช้ หรือหากกลุ่มนั้นไม่มีชื่อใดโดยเฉพาะ รายการ
ผู้เข้าร่วมในการสนทนา ไม่ตั้งชื่อการสนทนาสำหรับ
การแชทแบบหนึ่งต่อหนึ่ง เนื่องจากระบบจะใช้การมีอยู่ของฟิลด์นี้เป็นคำแนะนำ
การสนทนาเป็นกลุ่ม
รูปแบบนี้ใช้กับอุปกรณ์ที่ใช้ Android 7.0 (API ระดับ 24) ขึ้นไปเท่านั้น
เมื่อใช้ไลบรารีความเข้ากันได้
(NotificationCompat
),
ตามที่แสดงให้เห็นก่อนหน้า การแจ้งเตือนที่มี MessagingStyle
จะเปลี่ยนกลับ
เป็นรูปแบบการแจ้งเตือนแบบขยายที่รองรับโดยอัตโนมัติ
เมื่อสร้างการแจ้งเตือนลักษณะนี้สำหรับการสนทนาผ่านแชท ให้เพิ่มข้อความส่วนตัว การตอบกลับ
สร้างการแจ้งเตือนด้วยตัวควบคุมสื่อ
นำไปใช้
MediaStyleNotificationHelper.MediaStyle
เพื่อแสดงตัวควบคุมการเล่นสื่อและข้อมูลแทร็ก
ระบุ
MediaSession
ในช่วง
เครื่องมือสร้างขึ้นมา วิธีนี้จะช่วยให้ Android แสดงข้อมูลที่ถูกต้องเกี่ยวกับ
สื่อ
โทร
addAction()
ได้สูงสุด 5 ครั้งเพื่อแสดงปุ่มไอคอนสูงสุด 5 ปุ่ม โทรหา setLargeIcon()
ถึง
กำหนดปกอัลบั้ม
MediaStyle
ยังให้คุณแก้ไข
ดูเนื้อหาขนาดยุบได้โดยระบุปุ่มดำเนินการ 3 ปุ่มที่ปรากฏ
ในมุมมองแบบยุบ ในการดำเนินการดังกล่าว ให้ระบุดัชนีปุ่มการทำงานไปยัง
setShowActionsInCompactView()
ตัวอย่างต่อไปนี้แสดงวิธีการสร้างการแจ้งเตือนด้วยตัวควบคุมสื่อ
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button \*/)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(new MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button */)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build();
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลอ้างอิงต่อไปนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ MediaStyle
และ
การแจ้งเตือนที่ขยายได้