Modificare un badge di notifica

A partire da Android 8.0 (livello API 26), i badge di notifica, noti anche come indicatori di notifica: vengono visualizzati su un'icona in Avvio applicazioni quando l'app associata dispone di notifica attiva. Gli utenti possono tocca e tieni premuta l'icona dell'app per mostrare le notifiche, insieme a scorciatoie app, come mostrato in figura 1.

Questi puntini vengono visualizzati per impostazione predefinita nelle app Avvio app che li supportano non deve fare nulla la tua app. Tuttavia, potrebbero verificarsi situazioni in cui non vuoi che appaia l'indicatore di notifica o vuoi controllare esattamente le notifiche visualizzate.

Figura 1. Badge di notifica e i pulsanti touch e tieni premuto il menu.

Disattiva badge

In alcuni casi i badge non hanno senso per le notifiche, pertanto puoi disattivarle a seconda del canale richiamando setShowBadge(false) sul tuo NotificationChannel .

Ad esempio, potresti voler disattivare i badge di notifica nel seguente situazioni seguenti:

  • Notifiche continue: per la maggior parte delle notifiche continue, come l'elaborazione di immagini, i controlli di riproduzione dei contenuti multimediali o le istruzioni di navigazione correnti non hanno senso come badge.
  • Promemoria del calendario: evita di aggiungere badge a eventi che si verificano nell'ora corrente.
  • Eventi di orologio o sveglia: evita di aggiungere badge alle notifiche relative alle sveglie correnti.

Il seguente codice di esempio mostra come nascondere i badge per un canale di notifica:

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

Imposta un numero di notifiche personalizzato

Per impostazione predefinita, ogni notifica incrementa un numero visualizzato con il tocco e tieni premuto come mostrato nella Figura 1, ma puoi sostituire questo numero per la tua app. Ad esempio, ciò potrebbe essere utile se utilizzi una sola notifica per rappresentano più nuovi messaggi, ma vuoi che il conteggio rappresenti numero totale di nuovi messaggi.

Per impostare un numero personalizzato, chiama setNumber() sulla notifica, come mostrato qui:

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

Modificare il tocco e icona menu tieni premuto

Il tocco e menu di blocco mostra l'icona grande o piccola associata a un se disponibile. Per impostazione predefinita, viene visualizzata l'icona grande, ma puoi chiamare Notification.Builder.setBadgeIconType() e superare la BADGE_ICON_SMALL costante per visualizzare la piccola icona.

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

Nascondere una scorciatoia duplicata

Se la tua app crea una notifica che duplica una scorciatoia dell'app, puoi: nascondi temporaneamente la scorciatoia mentre la notifica è attiva chiamando setShortcutId()

Per altri esempi di codice che utilizzano le notifiche, vedi l'esempio di persone.