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 ở đó.
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.