Sửa đổi huy hiệu thông báo

Kể từ Android 8.0 (API cấp 26), huy hiệu thông báo (còn gọi là dấu chấm thông báo) sẽ xuất hiện trên biểu tượng trình chạy khi ứng dụng được liên kết có một thông báo đang hoạt động. Người dùng có thể chạm và giữ biểu tượng ứng dụng để hiển thị thông báo, cùng với mọi lối tắt ứng dụng, như minh hoạ trong hình 1.

Theo mặc định, những dấu chấm này xuất hiện trong các ứng dụng trình chạy có hỗ trợ chúng và ứng dụng của bạn không cần làm gì cả. Tuy nhiên, có thể có những trường hợp bạn không muốn dấu chấm thông báo xuất hiện hoặc bạn muốn kiểm soát chính xác những thông báo nào xuất hiện ở đó.

Hình 1. Huy hiệu thông báo và trình đơn chạm và giữ.

Tắt huy hiệu

Có những trường hợp huy hiệu không phù hợp với thông báo của bạn. Vì vậy, bạn có thể tắt huy hiệu trên từng kênh bằng cách gọi setShowBadge(false) trên đối tượng NotificationChannel.

Ví dụ: bạn có thể muốn tắt huy hiệu thông báo trong các trường hợp sau:

  • Thông báo hiển thị liên tục: hầu hết các thông báo hiển thị liên tục (chẳng hạn như tính năng xử lý hình ảnh, bộ điều khiển chế độ phát nội dung đa phương tiện hoặc hướng dẫn di chuyển hiện tại) không có ý nghĩa như một huy hiệu.
  • Lời nhắc trên lịch: tránh gắn huy hiệu cho các sự kiện xảy ra vào thời điểm hiện tại.
  • Sự kiện đồng hồ hoặc chuông báo: tránh các thông báo huy hiệu liên quan đến chuông báo hiện tại.

Mã mẫu sau đây minh hoạ cách ẩn huy hiệu cho kênh thông báo:

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);

Đặt số lượng thông báo tuỳ chỉnh

Theo mặc định, mỗi thông báo sẽ tăng một số hiển thị trên trình đơn chạm và giữ, như minh hoạ trong hình 1, nhưng bạn có thể ghi đè số này cho ứng dụng của mình. Ví dụ: việc này có thể hữu ích nếu bạn chỉ sử dụng một thông báo để trình bày nhiều thông báo mới nhưng muốn số đếm đại diện cho tổng số thông báo mới.

Để đặt một số tuỳ chỉnh, hãy gọi setNumber() trên thông báo như minh hoạ dưới đây:

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();

Sửa đổi biểu tượng trình đơn chạm và giữ của thông báo

Trình đơn chạm và giữ hiển thị biểu tượng lớn hoặc nhỏ liên kết với thông báo (nếu có). Theo mặc định, hệ thống sẽ hiển thị biểu tượng lớn, nhưng bạn có thể gọi Notification.Builder.setBadgeIconType() và truyền vào hằng số BADGE_ICON_SMALL để hiển thị biểu tượng nhỏ.

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();

Ẩn lối tắt trùng lặp

Nếu ứng dụng của bạn tạo một thông báo trùng lặp với một lối tắt ứng dụng, thì bạn có thể tạm thời ẩn lối tắt đó trong khi thông báo đang hoạt động bằng cách gọi setShortcutId().

Để biết thêm mã mẫu sử dụng thông báo, hãy xem mẫu Mọi người.