Modyfikowanie plakietki powiadomień

Począwszy od Androida 8.0 (poziom interfejsu API 26), plakietki powiadomień – nazywane też kropki powiadomień – pojawiają się na ikonie programu uruchamiającego, gdy powiązana aplikacja ma aktywne powiadomienie. Użytkownicy mogą dotknij & i przytrzymaj ikonę aplikacji, aby wyświetlić powiadomienia, skróty do aplikacji, jak widać tutaj: rysunek 1.

Te kropki pojawiają się domyślnie w programach uruchamiających, które je obsługują, oraz aplikacji nie potrzebuje. Może się jednak zdarzyć, że nie chcesz, żeby wyświetlała się kropka powiadomienia, lub chcesz dokładnie sterować które powiadomienia się tam wyświetlają.

Rysunek 1. Plakietki powiadomień oraz dotyk i przytrzymuj menu.

Wyłącz plakietki

W niektórych przypadkach plakietki nie mają sensu w przypadku powiadomień, więc można je wyłączyć dla każdego kanału, wywołując setShowBadge(false) na urządzeniu NotificationChannel obiektu.

Możesz na przykład wyłączyć plakietki powiadomień w następujących sytuacjach: w sytuacjach:

  • Bieżące powiadomienia: większość powiadomień o przetwarzaniu obrazu, np. o przetwarzaniu obrazu, elementy sterujące odtwarzaniem multimediów lub bieżące instrukcje nawigacji nie mają sensu. jako odznaki.
  • Przypomnienia z kalendarza: unikaj oznaczania wydarzeniami, które odbywają się w danej chwili.
  • Zdarzenia związane z zegarem lub alarmami: unikaj oznaczania powiadomień związanych z bieżącymi alarmami.

Ten przykładowy kod pokazuje, jak ukryć plakietki kanał powiadomień:

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

Ustaw niestandardową liczbę powiadomień

Domyślnie każde powiadomienie powoduje zwiększenie liczby wyświetlanej po dotknięciu przycisku & przytrzymaj jak widać na rysunku 1, ale możesz zastąpić tę liczbę w przypadku swojej aplikacji. Może to być przydatne, jeśli na przykład wysyłasz tylko jedno powiadomienie, aby reprezentują wiele nowych wiadomości, ale chcesz, aby licznik odzwierciedlał łączną liczbę nowych wiadomości.

Aby ustawić numer niestandardowy, zadzwoń do setNumber() w powiadomieniu, jak widać tutaj:

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

Modyfikowanie kliknięcia powiadomienia & ikona menu wstrzymania

Funkcje dotyku w którym jest wyświetlana duża lub mała ikona powiązana z powiadomienia, jeśli jest dostępne. Domyślnie system wyświetla dużą ikonę, ale Możesz zadzwonić Notification.Builder.setBadgeIconType() i zdaj BADGE_ICON_SMALL stały, aby wyświetlić małą ikonę.

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

Ukryj zduplikowany skrót

Jeśli Twoja aplikacja utworzy powiadomienie będące duplikatem skrótu do aplikacji, możesz tymczasowo ukryj skrót przez połączenie telefoniczne, gdy powiadomienie jest aktywne setShortcutId().

Więcej przykładowego kodu, który korzysta z powiadomień, znajdziesz w przykładzie dotyczącym osób.