แก้ไขป้ายการแจ้งเตือน

ตั้งแต่ Android 8.0 (API ระดับ 26) เป็นต้นไป ป้ายการแจ้งเตือนหรือที่เรียกว่าจุดแสดงการแจ้งเตือนจะปรากฏบนไอคอนตัวเปิดแอปเมื่อแอปที่เกี่ยวข้องมีการแจ้งเตือนที่ทำงานอยู่ ผู้ใช้สามารถแตะไอคอนแอปค้างไว้เพื่อแสดงการแจ้งเตือน รวมถึงทางลัดของแอปต่างๆ ดังที่แสดงในรูปที่ 1

จุดเหล่านี้จะปรากฏโดยค่าเริ่มต้นในแอป Launcher ที่รองรับ และแอปของคุณไม่จําเป็นต้องดำเนินการใดๆ อย่างไรก็ตาม อาจมีบางกรณีที่คุณไม่ต้องการให้จุดการแจ้งเตือนปรากฏขึ้น หรือต้องการควบคุมการแจ้งเตือนที่จะปรากฏ

รูปที่ 1 ป้ายแสดงการแจ้งเตือนและเมนูแบบแตะค้างไว้

ปิดใช้ป้าย

ในบางกรณี ป้ายอาจไม่เหมาะกับการแจ้งเตือนของคุณ คุณจึงปิดใช้ป้ายต่อช่องได้โดยเรียกใช้ 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