โดยปกติแล้วการแจ้งเตือนพื้นฐานจะมีชื่อ ข้อความ 1 บรรทัด และการดำเนินการที่ผู้ใช้ทำได้เพื่อตอบสนอง หากต้องการให้ข้อมูลเพิ่มเติม คุณสามารถสร้างการแจ้งเตือนขนาดใหญ่ที่ขยายได้โดยใช้เทมเพลตการแจ้งเตือนแบบใดแบบหนึ่งตามที่อธิบายไว้ในเอกสารนี้
หากต้องการเริ่มต้น ให้สร้างการแจ้งเตือนที่มีเนื้อหาพื้นฐานทั้งหมดตามที่อธิบายไว้ใน
สร้างการแจ้งเตือน จากนั้นเรียกใช้ setStyle() ด้วยออบเจ็กต์สไตล์และ
ระบุข้อมูลที่สอดคล้องกับแต่ละเทมเพลต ดังที่แสดงในตัวอย่างต่อไปนี้
เพิ่มรูปภาพขนาดใหญ่
หากต้องการเพิ่มรูปภาพในการแจ้งเตือน ให้ส่งอินสแตนซ์ของ
NotificationCompat.BigPictureStyle ไปยัง setStyle()
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 กับการแจ้งเตือนหากต้องการเพิ่ม
บรรทัดสรุปสั้นๆ หลายบรรทัด เช่น ข้อมูลสรุปจากอีเมลขาเข้า ซึ่งจะช่วยให้คุณเพิ่มข้อความเนื้อหาหลายรายการที่แต่ละรายการถูกตัดให้เหลือ 1 บรรทัด แทนที่จะเป็นข้อความ 1 บรรทัดต่อเนื่องที่ NotificationCompat.BigTextStyle ให้ไว้
หากต้องการเพิ่มบรรทัดใหม่ ให้เรียกใช้ addLine() ได้สูงสุด 6 ครั้ง ดังที่แสดงใน
ตัวอย่างต่อไปนี้ หากเพิ่มมากกว่า 6 บรรทัด ระบบจะแสดงเฉพาะ 6 บรรทัดแรก
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() ได้สูงสุด 5 ครั้งเพื่อแสดงปุ่มไอคอนได้สูงสุด 5 ปุ่ม
เรียกใช้ setLargeIcon() เพื่อตั้งค่าภาพปกอัลบั้ม
MediaStyle ยังช่วยให้คุณแก้ไขมุมมองเนื้อหาขนาดที่ยุบได้ด้วยการระบุปุ่มการดำเนินการ 3 ปุ่มที่จะปรากฏในมุมมองที่ยุบด้วย ซึ่งแตกต่างจากรูปแบบการแจ้งเตือนอื่นๆ หากต้องการทำเช่นนั้น ให้ระบุดัชนีปุ่มดำเนินการไปยัง
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 และการแจ้งเตือนที่ขยายได้ในข้อมูลอ้างอิงต่อไปนี้