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 liên kết có thông báo đang hoạt động. Người dùng có thể nhấn 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.

Các dấu chấm này xuất hiện theo mặc định trong các ứng dụng trình chạy 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 xuất hiện ở đó.

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

Tắt tính năng gắn huy hiệu

Trong một số 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 theo 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 đang diễn ra: hầu hết thông báo đang diễn ra, chẳng hạn như xử lý hình ảnh, điều khiển phát nội dung nghe nhìn hoặc hướng dẫn điều hướng hiện tại, đều không phù hợp với 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 tại thời điểm hiện tại.
  • Sự kiện đồng hồ hoặc chuông báo: tránh gửi thông báo gắn 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 một 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 con số hiển thị trên trình đơn nhấn và giữ, như minh hoạ trong hình 1, nhưng bạn có thể ghi đè con số này cho ứng dụng của mình. Ví dụ: điều này có thể hữu ích nếu bạn chỉ sử dụng một thông báo để đại diện cho nhiều tin nhắn mới nhưng muốn số lượng này đại diện cho tổng số tin nhắn mới.

Để đặt số tuỳ chỉnh, hãy gọi setNumber() trên thông báo như sau:

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ữ sẽ hiển thị biểu tượng lớn hoặc nhỏ liên kết với một 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 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 ứng dụng mẫu SociaLite.