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 ha una notifica attiva. Gli utenti possono toccare e tenere premuta l'icona dell'app per visualizzare le notifiche, insieme alle eventuali scorciatoie dell'app, come mostrato nella Figura 1.

Questi puntini vengono visualizzati per impostazione predefinita nelle app Avvio app che le supportano e l'app non richiede alcun intervento da parte tua. Tuttavia, potrebbero verificarsi situazioni in cui potresti non voler visualizzare l'indicatore di notifica o potresti voler controllare esattamente quali notifiche vengono visualizzate al suo interno.

Figura 1. Badge di notifica e menu Tocca e tieni premuto.

Disattiva badge

In alcuni casi, i badge non hanno senso per le notifiche, quindi puoi disattivarli a livello di canale chiamando setShowBadge(false) sul tuo oggetto NotificationChannel.

Ad esempio, potresti voler disabilitare i badge di notifica nelle seguenti situazioni:

  • Notifiche in corso: la maggior parte delle notifiche in corso, come l'elaborazione di immagini, i controlli per la riproduzione di contenuti multimediali o le istruzioni di navigazione correnti, non ha senso come badge.
  • Promemoria calendario: evita di assegnare badge agli eventi che si verificano ora.
  • Eventi di orologio o sveglia: evita di assegnare problemi alle notifiche relative alle sveglie correnti.

Il seguente codice di esempio mostra come nascondere i badge in 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 conteggio notifiche personalizzato

Per impostazione predefinita, ogni notifica incrementa un numero visualizzato nel menu Tocca 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 rappresentare più nuovi messaggi, ma vuoi che il conteggio rappresenti il numero totale di nuovi messaggi.

Per impostare un numero personalizzato, chiama il numero setNumber() nella 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 l'icona del menu Tocca e tieni premuto di una notifica

Il menu Tocca e tieni premuto mostra l'icona grande o piccola associata a una notifica, se disponibile. Per impostazione predefinita, il sistema mostra l'icona grande, ma puoi chiamare Notification.Builder.setBadgeIconType() e passare la costante BADGE_ICON_SMALL per visualizzare l'icona piccola.

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

Nascondi una scorciatoia duplicata

Se l'app crea una notifica che duplica una scorciatoia app, puoi nasconderla temporaneamente mentre la notifica è attiva chiamando setShortcutId().

Per altri codici campione che utilizzano le notifiche, vedi Esempio di persone.