Visão geral de notificações

Uma notificação é uma mensagem que o Android exibe fora da IU do app para fornecer ao usuário lembretes, comunicações de outras pessoas ou outras informações oportunas do seu app. Os usuários podem tocar na notificação para abrir o app ou realizar uma ação diretamente dela.

Esta página fornece uma visão geral do local em que as notificações aparecem e os recursos disponíveis. Para começar a criar notificações, leia Criar uma notificação.

Para mais informações sobre o design de notificações e os padrões de interação, consulte o Guia de design para notificações (link em inglês).

Exibições em dispositivos

As notificações aparecem automaticamente para os usuários em diferentes locais e formatos. Uma notificação aparece como um ícone na barra de status, uma entrada mais detalhada na gaveta de notificações e um selo no ícone do app. As notificações também aparecem em wearables pareados.

Barra de status e gaveta de notificações

Quando você envia uma notificação, primeiramente ela é exibida como um ícone na barra de status.

Figura 1. Os ícones de notificação aparecem no lado esquerdo da barra de status.

Os usuários podem deslizar para baixo na barra de status para abrir a gaveta de notificações, onde é possível conferir mais detalhes e realizar ações com a notificação.

Figura 2. Notificações na gaveta de notificações.

Os usuários podem arrastar para baixo uma notificação na gaveta para revelar a exibição expandida, que mostra mais conteúdo e botões de ação, caso algum seja fornecido. A partir do Android 13, essa visualização expandida inclui um botão que permite que os usuários interrompam um app que tenha serviços em primeiro plano em andamento.

Uma notificação permanece visível na gaveta até que seja dispensada pelo app ou pelo usuário.

Notificação de informações básicas

A partir do Android 5.0, as notificações podem aparecer brevemente em uma janela flutuante chamada notificação de informações básicas. Esse comportamento normalmente serve para notificações importantes, que o usuário precisa conhecer imediatamente. A exibição será feita somente se o dispositivo estiver desbloqueado.

Figura 3. Uma notificação de informações básicas aparece na frente do app em primeiro plano.

A notificação de informações básicas aparece quando o app envia a notificação. Ela desaparece após alguns instantes, mas permanece visível na gaveta de notificações, como de costume.

As condições que podem acionar notificações de informações básicas incluem:

  • A atividade do usuário está no modo de tela cheia, como quando o app usa fullScreenIntent.

  • A notificação tem alta prioridade e usa toques ou vibrações em dispositivos com o Android 7.1 (nível 25 da API) e versões anteriores.

  • O canal de notificação tem alta importância em dispositivos com o Android 8.0 (nível 26 da API) e versões mais recentes.

Tela de bloqueio

A partir do Android 5.0, as notificações podem aparecer na tela de bloqueio.

É possível definir programaticamente se as notificações postadas pelo app são mostradas em uma tela de bloqueio segura e, se sim, o nível de detalhe visível.

Os usuários podem usar as configurações do sistema para escolher o nível de detalhes visíveis nas notificações da tela de bloqueio ou desativar todas elas. A partir do Android 8.0, os usuários podem desativar ou ativar as notificações da tela de bloqueio para cada canal de notificação.

Figura 4. Notificações na tela de bloqueio com conteúdo sensível oculto.

Para saber mais, consulte Definir a visibilidade na tela de bloqueio.

Indicador do ícone do app

Em telas de início compatíveis em dispositivos com o Android 8.0 (nível 26 da API) e versões mais recentes, os ícones de apps indicam novas notificações com um selo colorido, conhecido como ponto de notificação, no ícone na tela de início do app correspondente.

Os usuários podem tocar e pressionar o ícone de um app para ver as notificações dele. Eles podem dispensar ou interagir com as notificações nesse menu, da mesma forma que na gaveta de notificações.

Figura 5. Ícones de notificação e o menu "tocar e manter pressionado".

Para saber mais sobre como os indicadores funcionam, leia Modificar um indicador de notificação.

Dispositivos Wear OS

Se o usuário tiver um dispositivo Wear OS pareado, todas as notificações serão exibidas automaticamente nele. Isso inclui os detalhes expansíveis e os botões de ação.

Você pode melhorar a experiência personalizando a aparência das notificações em wearables e fornecendo ações diferentes, como respostas sugeridas e respostas por entrada de texto por voz. Para saber mais, consulte como adicionar recursos específicos para wearables à sua notificação.

Figura 6. As notificações aparecem automaticamente em um dispositivo Wear OS pareado.

Anatomia de uma notificação

O design de uma notificação é determinado por modelos do sistema, e o app define o conteúdo de cada parte do modelo. Alguns detalhes da notificação só aparecem na visualização expandida.

Figura 7. Uma notificação com detalhes básicos.

As partes mais comuns de uma notificação são indicadas na Figura 7 da seguinte forma:

  1. Ícone pequeno: obrigatório; definido usando setSmallIcon().
  2. Nome do app: fornecido pelo sistema.
  3. Carimbo de data/hora: fornecido pelo sistema, mas você pode substituir com setWhen() ou ocultar com setShowWhen(false).
  4. Ícone grande: opcional, normalmente usado apenas para fotos de contato. Não use para o ícone do app. Defina usando setLargeIcon().
  5. Título: opcional; definido usando setContentTitle().
  6. Texto: opcional; definido usando setContentText().

É altamente recomendável usar modelos do sistema para garantir a compatibilidade de design adequada em todos os dispositivos. Se necessário, você pode criar um layout de notificação personalizado.

Para saber mais sobre como criar uma notificação com esses recursos e mais, leia Criar uma notificação.

Ações da notificação

Embora não seja obrigatório, é uma boa prática que todas as notificações abram uma atividade adequada do app quando tocadas. Além dessa ação de notificação padrão, você pode adicionar botões de ação que concluem uma tarefa relacionada ao app a partir da notificação, geralmente sem abrir uma atividade, conforme mostrado na Figura 8.

Figura 8. Uma notificação com botões de ação.

A partir do Android 7.0 (nível 24 da API), você pode adicionar uma ação para responder a mensagens ou inserir outros textos diretamente da notificação.

A partir do Android 10 (API de nível 29), a plataforma pode gerar botões de ação automaticamente com ações baseadas em intents sugeridas.

Mais informações sobre como adicionar botões de ação estão disponíveis em Criar uma notificação.

Exigir um dispositivo desbloqueado

Os usuários podem ver ações de notificação na tela de bloqueio do dispositivo. Se uma ação de notificação fizer com que um app inicie uma atividade ou envie uma resposta direta, os usuários precisarão desbloquear o dispositivo antes que o app possa invocar essa ação de notificação.

No Android 12 (nível 31 da API) e versões mais recentes, é possível configurar uma ação de notificação para que o dispositivo seja desbloqueado e o app invoque essa ação, independentemente do fluxo de trabalho que a ação inicia. Essa opção adiciona uma camada extra de segurança às notificações em dispositivos bloqueados.

Para exigir que um dispositivo seja desbloqueado antes que o app invoque determinada ação de notificação, transmita true para setAuthenticationRequired() ao criar sua ação de notificação, conforme mostrado no snippet de código a seguir:

Kotlin

val moreSecureNotification = Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Java

Notification moreSecureNotification = new Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build();

Notificação expansível

Por padrão, o conteúdo de texto da notificação é truncado para caber em uma única linha. Se você quiser que sua notificação seja mais longa, ative uma área de texto maior, que é expansível com a aplicação de um modelo suplementar, conforme exibido na Figura 9.

Figura 9. Notificação expansível para texto grande.

Também é possível criar uma notificação expansível com uma imagem, com estilo de caixa de entrada, com uma conversa de bate-papo ou com controles de reprodução de mídia. Para saber mais, leia Criar uma notificação expansível.

Grupos e atualizações de notificação

Para não bombardear seus usuários com notificações múltiplas ou redundantes quando houver novas atualizações, atualize uma notificação existente em vez de emitir uma nova ou use a notificação no estilo de caixa de entrada para mostrar as atualizações da conversa.

No entanto, se for necessário enviar várias notificações, considere agrupá-las em um grupo, disponível no Android 7.0 e versões mais recentes.

Um grupo de notificações permite que você recolha várias notificações em uma só postagem na gaveta de notificações com um resumo. O usuário pode expandir progressivamente o grupo de notificações e cada notificação dentro dele para conferir mais detalhes, conforme mostrado na figura 10.

Figura 10. Um grupo de notificações recolhido e expandido.

Para saber como adicionar notificações a um grupo, consulte Criar um grupo de notificações.

Canais de notificação

A partir do Android 8.0 (nível 26 da API), todas as notificações precisam ser atribuídas a um canal ou não serão exibidas. Isso permite que os usuários desativem canais de notificação específicos para seu app em vez de desativar todas as notificações. Os usuários podem controlar as opções visuais e sonoras de cada canal nas configurações do sistema Android, conforme mostrado na Figura 11. Os usuários também podem tocar e pressionar uma notificação para mudar os comportamentos do canal associado.

Nos dispositivos com Android 7.1 (nível 25 da API) e versões anteriores, os usuários só podem gerenciar as notificações de um app por vez. Cada app tem apenas um canal no Android 7.1 e versões anteriores.

Figura 11. Configurações de notificação para o app Relógio e um dos canais dele.

Um app pode ter canais separados para cada tipo de notificação emitida. Além disso, o app pode criar canais de notificação em resposta a escolhas feitas pelos usuários. Por exemplo, é possível configurar canais de notificação separados para cada grupo de conversas criado por um usuário em um app de mensagens.

O canal também é onde você especifica o nível de importância das notificações no Android 8.0 e versões mais recentes. Assim, todas as notificações publicadas no mesmo canal têm o mesmo comportamento. Isso é descrito na seção a seguir.

Para saber mais, consulte Criar e gerenciar canais de notificação.

Importância da notificação

O Android usa a importância de uma notificação para determinar o nível em que ela pode interromper o usuário (visual e sonoramente). Quanto mais importante for uma notificação, mais ela poderá causar interrupções.

No Android 7.1 (nível 25 da API) e versões anteriores, a importância de uma notificação é determinada pela priority da notificação.

No Android 8.0 (nível 26 da API) e versões mais recentes, a importância de uma notificação é determinada pela importance do canal em que a notificação é postada. Os usuários podem mudar a importância de um canal de notificação nas configurações do sistema, conforme mostrado na Figura 12.

Figura 12. Os usuários podem mudar a importância de cada canal no Android 8.0 e versões mais recentes.

Os possíveis níveis de importância e os comportamentos de notificação associados são os seguintes:

  • Urgente: emite um som e aparece como uma notificação de alerta.

  • Alta: emite um som.

  • Média: não emite som.

  • Baixa: não emite som e não aparece na barra de status.

Todas as notificações, independentemente da importância, aparecem em locais não interruptivos da IU do sistema, como na gaveta de notificações e como um indicador no ícone na tela de início. No entanto, é possível modificar a aparência do selo de notificação.

Para saber mais, leia como definir a importância.

Modo Não perturbe

A partir do Android 5.0 (nível 21 da API), os usuários podem ativar o modo Não perturbe, que silencia sons e vibrações de todas as notificações. As notificações ainda aparecem normalmente na IU do sistema, a menos que o usuário especifique o contrário.

Há três níveis disponíveis no modo Não perturbe:

  • Silêncio total: bloqueia todos os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos.
  • Somente alarmes: bloqueia todos os sons e vibrações, exceto os alarmes.
  • Somente prioridade: os usuários podem configurar quais categorias do sistema podem causar interrupções (como apenas alarmes, lembretes, eventos, chamadas ou mensagens). Para mensagens e ligações, os usuários podem filtrar com base no remetente ou no autor da chamada, conforme mostrado na Figura 13.

Figura 13. Os usuários podem permitir notificações com base em categorias do sistema (à esquerda) e no remetente ou autor da chamada (à direita).

No Android 8.0 (nível 26 da API) e versões mais recentes, os usuários também podem permitir notificações com base em categorias específicas do app (também conhecidas como canais), modificando o modo Não perturbe em cada canal. Por exemplo, um app de pagamento pode ter canais para notificações relacionadas a saque e depósito. O usuário pode permitir notificações de saques, depósitos ou ambos no modo de prioridade.

Nos dispositivos com Android 7.1 (nível 25 da API) e versões anteriores, os usuários podem permitir notificações de acordo com a configuração de cada app, em vez de cada canal.

Para configurar suas notificações com essas configurações do usuário, é preciso definir uma categoria para todo o sistema.

Notificações para serviços em primeiro plano

Uma notificação é necessária quando o app está executando um serviço em primeiro plano, ou seja, um Service executado em segundo plano, que é de longa duração e perceptível para o usuário, como um player de mídia. Essa notificação não pode ser dispensada como as outras. Para remover a notificação, o serviço precisa ser interrompido ou removido do estado em primeiro plano.

Para mais informações, leia Serviços em primeiro plano. Se você estiver criando um player de mídia, leia também Como tocar mídia em segundo plano.

Limites de postagem

A partir do Android 8.1 (nível 27 da API), os apps não podem emitir sons de notificação mais de uma vez por segundo. Se o app postar várias notificações em um segundo, todas serão exibidas conforme o esperado, mas só a primeira notificação por segundo emitirá um som.

No entanto, o Android também aplica um limite de taxa para atualizar uma notificação. Se você postar atualizações para uma única notificação com muita frequência, como várias em menos de um segundo, o sistema poderá ignorar algumas delas.

Compatibilidade de notificações

A interface do sistema de notificações do Android e as APIs relacionadas a elas evoluem continuamente. Para usar os recursos da API de notificação mais recente e manter a compatibilidade com dispositivos mais antigos, use a API de notificação da Biblioteca de suporte, NotificationCompat, e as subclasses dela, além de NotificationManagerCompat. Isso evita que você precise escrever código condicional para verificar os níveis da API, já que essas APIs fazem isso por você.

A NotificationCompat é atualizada conforme a plataforma evolui para incluir os métodos mais recentes. No entanto, a disponibilidade de um método em NotificationCompat não garante que o recurso correspondente seja fornecido em dispositivos mais antigos. Em alguns casos, chamar uma API recém-introduzida resulta em um ambiente autônomo em dispositivos mais antigos.

Confira a seguir um resumo das mudanças de comportamento mais notáveis por nível da API para notificações do Android.

Android 5.0, API de nível 21

  • Introduziu as notificações na tela de bloqueio e as de informações básicas.

  • Permite que o usuário defina o smartphone no modo "Não perturbe" e configure quais notificações podem causar interrupções quando o dispositivo está no modo somente prioridade.

  • Foram adicionados métodos para definir se uma notificação é exibida na tela de bloqueio, como setVisibility(), e para especificar uma versão "pública" do texto da notificação.

  • Adiciona o método setPriority(), que informa ao sistema o nível de interrupção da notificação. Por exemplo, definir a prioridade como alta faz com que a notificação apareça como uma notificação de informações básicas.

  • Adição de suporte a pilhas de notificações para dispositivos Android Wear, agora chamados de Wear OS. Inserir notificações em uma pilha usando setGroup(). As pilhas de notificações, conhecidas posteriormente como grupo ou pacote, não têm suporte em tablets ou smartphones até o Android 7.0 (nível 24 da API).

Android 7.0, API de nível 24

  • Reestiliza os modelos de notificação para enfatizar a imagem principal e o avatar.

  • Adiciona três modelos de notificação: um para apps de mensagens e os outros dois para decorar visualizações de conteúdo personalizadas com a possibilidade de expansão e outras decorações do sistema.

  • Adiciona suporte a dispositivos portáteis, como smartphones e tablets, para grupos de notificação. Usa a mesma API das pilhas de notificação do Android Wear (agora chamado Wear OS) introduzidas no Android 5.0 (API de nível 21).

  • Permite que os usuários respondam dentro de uma notificação usando a resposta in-line. Eles podem inserir texto, que é roteado para o app pai da notificação.

Android 8.0, API de nível 26

  • Faz com que notificações individuais sejam colocadas em um canal específico.

  • Permite que os usuários desativem as notificações por canal, em vez de desativar todas as notificações de um app.

  • Faz com que os apps com notificações ativas mostrem um ícone de notificação sobre o ícone do app na tela inicial ou de exibição.

  • Permite que os usuários adiem uma notificação na gaveta. Você pode definir um tempo limite automático para uma notificação.

  • Permite definir a cor de fundo da notificação.

  • Algumas APIs relacionadas aos comportamentos de notificação foram movidas de Notification para NotificationChannel. Por exemplo, use NotificationChannel.setImportance() em vez de NotificationCompat.Builder.setPriority() para o Android 8.0 e versões mais recentes.

Android 13.0, API de nível 33

Android 14.0, API de nível 34

  • Limita as notificações de intent em tela cheia a apps que fornecem chamadas e alarmes. Use a API NotificationManager.canUseFullScreenIntent para verificar se o app tem permissão. Caso contrário, o app pode usar ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT para abrir a página de configurações em que os usuários podem conceder a permissão.

  • Muda a maneira como os usuários interagem com notificações não dispensáveis, permitindo que eles dispensem a ação de notificação mesmo quando a flag Notification.FLAG_ONGOING_EVENT está definida. Isso não se aplica a notificações CallStyle se a flag Notification.FLAG_ONGOING_EVENT estiver definida ou ao controlador de políticas do dispositivo (DPC) e aos pacotes de suporte para empresas. Isso também não se aplica quando o telefone está bloqueado ou se o usuário seleciona Limpar tudo.