ตั้งแต่ Android 8.0 (API ระดับ 26) เป็นต้นไป ป้ายการแจ้งเตือนหรือที่เรียกว่าจุดแสดงการแจ้งเตือนจะปรากฏบนไอคอนตัวเปิดแอปเมื่อแอปที่เกี่ยวข้องมีการแจ้งเตือนที่ทำงานอยู่ ผู้ใช้สามารถแตะไอคอนแอปค้างไว้เพื่อแสดงการแจ้งเตือน รวมถึงทางลัดของแอปต่างๆ ดังที่แสดงในรูปที่ 1
จุดเหล่านี้จะปรากฏโดยค่าเริ่มต้นในแอป Launcher ที่รองรับ และแอปของคุณไม่จําเป็นต้องดำเนินการใดๆ อย่างไรก็ตาม อาจมีบางกรณีที่คุณไม่ต้องการให้จุดการแจ้งเตือนปรากฏขึ้น หรือต้องการควบคุมการแจ้งเตือนที่จะปรากฏ
ปิดใช้ป้าย
ในบางกรณี ป้ายอาจไม่เหมาะกับการแจ้งเตือนของคุณ คุณจึงปิดใช้ป้ายต่อช่องได้โดยเรียกใช้ setShowBadge(false)
ในออบเจ็กต์ NotificationChannel
ตัวอย่างเช่น คุณอาจต้องการปิดใช้ป้ายการแจ้งเตือนในสถานการณ์ต่อไปนี้
- การแจ้งเตือนต่อเนื่อง: การแจ้งเตือนต่อเนื่องส่วนใหญ่ เช่น การปรับแต่งรูปภาพ การควบคุมการเล่นสื่อ หรือคำแนะนำการนำทางปัจจุบัน ไม่ควรใช้เป็นป้าย
- การช่วยเตือนในปฏิทิน: หลีกเลี่ยงการแสดงป้ายกิจกรรมที่เกิดขึ้นในเวลาปัจจุบัน
- เหตุการณ์นาฬิกาหรือการปลุก: หลีกเลี่ยงการแจ้งเตือนแบบป้ายที่เกี่ยวข้องกับการปลุกปัจจุบัน
โค้ดตัวอย่างต่อไปนี้แสดงวิธีซ่อนป้ายสำหรับแชแนลการแจ้งเตือน
Kotlin
val id = "my_channel_01" val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_LOW val mChannel = NotificationChannel(id, name, importance).apply { description = descriptionText setShowBadge(false) } val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(mChannel)
Java
String id = "my_channel_01"; CharSequence name = getString(R.string.channel_name); String description = getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel mChannel = new NotificationChannel(id, name, importance); mChannel.setDescription(description); mChannel.setShowBadge(false); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(mChannel);
กำหนดจำนวนการแจ้งเตือนที่กำหนดเอง
โดยค่าเริ่มต้น การแจ้งเตือนแต่ละรายการจะเพิ่มจำนวนที่แสดงในเมนูแตะค้างไว้ ดังที่แสดงในรูปที่ 1 แต่คุณสามารถลบล้างจำนวนนี้สำหรับแอปได้ เช่น การดำเนินการนี้อาจมีประโยชน์หากคุณใช้การแจ้งเตือนเพียงรายการเดียวเพื่อแสดงข้อความใหม่หลายรายการ แต่ต้องการให้การนับแสดงจํานวนข้อความใหม่ทั้งหมด
หากต้องการตั้งค่าหมายเลขที่กำหนดเอง ให้โทรไปที่ setNumber()
ในการแจ้งเตือนดังที่แสดงที่นี่
Kotlin
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setNumber(messageCount) .build()
Java
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setNumber(messageCount) .build();
แก้ไขไอคอนเมนูการแตะค้างไว้ของการแจ้งเตือน
เมนูการแตะค้างไว้จะแสดงไอคอนขนาดใหญ่หรือขนาดเล็กที่เชื่อมโยงกับการแจ้งเตือน (หากมี) โดยค่าเริ่มต้น ระบบจะแสดงไอคอนขนาดใหญ่ แต่คุณสามารถเรียกใช้ Notification.Builder.setBadgeIconType()
และส่งค่าคงที่ BADGE_ICON_SMALL
เพื่อแสดงไอคอนขนาดเล็ก
Kotlin
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL) .build()
Java
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL) .build();
ซ่อนทางลัดที่ซ้ำกัน
หากแอปสร้างการแจ้งเตือนที่ซ้ำกับทางลัดแอป คุณสามารถซ่อนทางลัดชั่วคราวขณะที่การแจ้งเตือนทำงานอยู่ได้โดยเรียกใช้ setShortcutId()
ดูโค้ดตัวอย่างเพิ่มเติมที่ใช้การแจ้งเตือนได้ที่แอปตัวอย่าง SocioLite