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.
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.