A partir do Android 8.0 (nível 26 da API), os indicadores de notificação, também conhecidos como pontos de notificação, aparecem no ícone da tela de início quando o app associado tem uma notificação ativa. Os usuários podem tocar e pressionar o ícone do app para revelar as notificações e os atalhos do app, conforme mostrado na Figura 1.
Esses pontos aparecem por padrão nos apps de inicialização compatíveis, e não há nada que seu app precise fazer. No entanto, pode haver situações em que você não queira que o ponto de notificação apareça ou que queira controlar exatamente quais notificações serão exibidas.
Desativar a exibição de indicadores
Há casos em que os badges não fazem sentido para suas notificações. Sendo assim, você pode
desativá-los por canal chamando
setShowBadge(false)
no objeto
NotificationChannel
.
Por exemplo, convém desativar os indicadores de notificação nas seguintes situações:
- Notificações em andamento: a maioria das notificações em andamento, como processamento de imagem, controles de reprodução de mídia ou instruções de navegação atuais, não faz sentido como um selo.
- Lembretes da agenda: evite exibir indicadores para eventos que estejam ocorrendo no momento.
- Eventos de relógio ou alarme: evite exibir badges para notificações relacionadas a alarmes atuais.
O exemplo de código abaixo demonstra como ocultar badges para um canal de notificaçã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);
Definir contagem de notificações personalizada
Por padrão, cada notificação incrementa um número exibido no menu de toque e pressionamento, conforme mostrado na Figura 1, mas você pode modificar esse número no app. Por exemplo, isso pode ser útil se você estiver usando apenas uma notificação para representar várias novas mensagens, mas quer que a contagem represente o número total de novas mensagens.
Para definir um número personalizado, chame
setNumber()
na notificação, conforme mostrado aqui:
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();
Modificar o ícone do menu "Toque e pressione " de uma notificação
O menu de tocar e pressionar mostra o ícone grande ou pequeno associado a uma
notificação, se disponível. Por padrão, o sistema exibe o ícone grande, mas
é possível chamar
Notification.Builder.setBadgeIconType()
e transmitir a constante BADGE_ICON_SMALL
para mostrar o ícone pequeno.
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();
Ocultar um atalho duplicado
Se o app criar uma notificação que duplique um atalho de app, você poderá
ocultar temporariamente o atalho enquanto a notificação estiver ativa chamando
setShortcutId()
.
Para conferir mais exemplos de código que usam notificações, consulte o app de exemplo do Socialite.