A partir do Android 8.0 (API de nível 26), selos de notificação, também conhecidos como pontos de notificação: aparecem em um ícone na tela de início quando o app associado tem um notificação ativa. Os usuários podem tocar e mantenha o ícone do aplicativo pressionado para revelar as notificações, junto com quaisquer atalhos de apps, conforme mostrado em Figura 1.
Esses pontos aparecem por padrão em apps da tela de início que oferecem suporte a eles, e há nada que o aplicativo precise fazer. No entanto, pode haver situações em que você você não quiser que o ponto de notificação apareça ou queira controlar exatamente quais notificações aparecem lá.
Figura 1. Insígnias de notificação e o botão de toque e menu suspenso.
Desativar a exibição de indicadores
Há casos em que os selos não fazem sentido para suas notificações,
pode desativá-los por canal chamando
setShowBadge(false)
no seu NotificationChannel
objeto.
Por exemplo, é possível desativar os balões de notificação nos seguintes situações:
- Notificações em andamento: a maioria delas, como processamento de imagens, controles de mídia ou instruções de navegação atuais não fazem sentido como um selo.
- Lembretes da agenda: evite usar a identificação de eventos que estejam ocorrendo no momento.
- Eventos de relógio ou alarme: evite exibir indicadores para notificações relacionadas a alarmes atuais.
O exemplo de código a seguir demonstra como ocultar selos 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 segurar como mostrado na figura 1, mas é possível substituir esse número pelo aplicativo. Por exemplo, isso pode ser útil se você estiver usando apenas uma notificação para representam várias novas mensagens, mas quer que a contagem represente total de novas mensagens.
Para definir um número personalizado, ligue
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 toque e ícone do menu "Manter pressionado"
A função Tocar e menu suspenso exibe o ícone grande ou pequeno associado a uma
se disponível. Por padrão, o sistema exibe o ícone grande, mas
Você pode chamar
Notification.Builder.setBadgeIconType()
e transmita a BADGE_ICON_SMALL
para exibir 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
Caso seu app crie uma notificação que duplique um atalho, você poderá
ocultar temporariamente o atalho enquanto a notificação estiver ativa chamando
setShortcutId()
.
Para ver mais exemplos de códigos que usam notificações, consulte Amostras de pessoas.