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, comunicados de outras pessoas ou outras informações oportunas do seu app. Os usuários podem tocar na notificação para abrir seu app ou executar uma ação diretamente da notificação.

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

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

Exibições em dispositivos

As notificações aparecem para os usuários em diferentes locais e formatos, como um ícone na barra de status, uma entrada mais detalhada na gaveta de notificações, um indicador no ícone do app e de forma automática em wearables pareados.

Barra de status e gaveta de notificações

Quando uma notificação é enviada, primeiro ela aparece 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 ver mais detalhes e executar ações com a notificação.

Figura 2. Notificações na gaveta.

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 tenham 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. Geralmente, esse comportamento se aplica a notificações importantes que o usuário precisa ver imediatamente e só aparece 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 no momento em que seu app envia a notificação e desaparece após alguns instantes, mas permanece visível na gaveta de notificações, como de costume.

Alguns exemplos de condições que podem acionar notificações de informações básicas:

  • A atividade do usuário está em modo de tela cheia (o app usa fullScreenIntent).
  • A notificação tem prioridade alta e usa toque ou vibração em dispositivos com o Android 7.1 (API de nível 25) e versões anteriores.
  • O canal de notificação tem muita importância em dispositivos com o Android 8.0 (API de nível 26) e versões mais recentes.

Tela de bloqueio

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

Você pode definir programaticamente o nível de detalhes visíveis em notificações postadas pelo seu app em uma tela de bloqueio segura, ou até mesmo se a notificação será exibida ou não na tela de bloqueio.

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, incluindo a opção de desativar todas as notificações dessa tela. A partir do Android 8.0, os usuários podem optar por 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, veja como Configurar a visibilidade na tela de bloqueio.

Indicador do ícone do app

Nas telas de início compatíveis em dispositivos com Android 8.0 (API de nível 26) e versões mais recentes, os ícones dos apps mostram que há novas notificações com um "indicador" colorido (também conhecido como "ponto de notificação") no ícone na tela de início do app correspondente.

Os usuários podem tocar no ícone de um app e mantê-lo pressionado para ver as notificações desse app. Depois, eles podem dispensar as notificações ou interagir com elas a partir desse menu, da mesma forma que na gaveta de notificações.

Figura 5. Indicadores de notificação e menu exibido após tocar e manter pressionado

Para saber mais sobre o funcionamento dos indicadores, leia Indicadores de notificação.

Dispositivos Wear OS

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

Você também pode melhorar a experiência personalizando algumas exibições da notificação em wearables e fornecendo ações diferentes, como respostas sugeridas e respostas por entrada de texto por voz. Para saber mais, veja 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 pelos modelos do sistema. Seu app simplesmente define o conteúdo de cada parte do modelo. Alguns detalhes da notificação só aparecem na exibiçã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 e definido com 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 e definido com setLargeIcon(). Normalmente é usado apenas para fotos de contatos. Não use para o ícone de app.
  5. Título: é opcional e definido com setContentTitle().
  6. Texto: é opcional e definido com setContentText().

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

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

Ações da notificação

Embora não seja obrigatório, é recomendado que todas as notificações abram uma atividade apropriada no app quando tocadas. Além dessa ação de notificação padrão, você pode adicionar botões de ação que executam uma tarefa relacionada ao app a partir da notificação (geralmente sem abrir uma atividade), conforme exibido na Figura 9.

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

A partir do Android 7.0 (API de nível 24), também é possível adicionar uma ação para responder mensagens ou inserir outros textos diretamente a partir 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 determinada 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 ele possa invocar essa ação de notificação.

No Android 12 (API de nível 31) 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 ajuda a adicionar 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, como mostrado no seguinte snippet de código:

Kotlin

val moreSecureNotification = Notification.Builder(
        context, NotificationListenerVerifierActivity.TAG)
    .addAction(...)

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

Java

Notification moreSecureNotification = new Notification.Builder(
        context, NotificationListenerVerifierActivity.TAG)
    .addAction(...)

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

Figura 8. 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, uma conversa de bate-papo ou 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, considere a possibilidade de atualizar uma notificação existente em vez de emitir uma nova. Ou você pode utilizar a notificação no estilo de caixa de entrada para exibir atualizações de conversas.

No entanto, caso seja necessário enviar várias notificações, é recomendável considerar a possibilidade de agrupá-las (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, com um resumo. O usuário pode, então, expandir o grupo para ver os detalhes de cada notificação individual.

O usuário pode expandir esse grupo progressivamente, assim como cada notificação dentro dele para ver mais detalhes.

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 (API de nível 26), todas as notificações precisam ser atribuídas a um canal ou não serão exibidas. Ao categorizar as notificações em canais, os usuários podem desativar canais de notificação específicos para seu app (em vez de desativar todas as notificações) e podem controlar as opções visuais e sonoras de cada canal, tudo isso a partir das configurações do sistema Android (Figura 11). Os usuários também podem tocar em uma notificação e mantê-la pressionada para mudar os comportamentos do canal associado.

Nos dispositivos com Android 7.1 (API de nível 25) e versões anteriores, os usuários só podem gerenciar as notificações de um app por vez. Na verdade, cada aplicativo tem apenas um canal nessas versões do sistema operacional.

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

Um app pode ter vários canais de notificação, sendo um canal separado para cada tipo de notificação emitida por ele. Um app também pode criar canais de notificação para refletir as escolhas feitas pelos usuários do seu app. Por exemplo, você pode 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 suas 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.

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, mais a notificação poderá causar interrupções.

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

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

Os possíveis níveis de importância são os seguintes:

  • Urgente: emite um som e aparece como uma notificação de informações básicas.
  • Alta: emite um som.
  • Média: sem som.
  • Baixa: sem som e não aparece na barra de status.

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

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

Modo Não perturbe

A partir do Android 5.0 (API de nível 21), 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 aparecerão normalmente na IU do sistema, a menos que o usuário especifique de outra forma.

Há três níveis diferentes 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 de todo o sistema podem causar interrupções (como apenas alarmes, lembretes, eventos, chamadas ou mensagens). Para mensagens e chamadas, os usuários também podem escolher filtrar de acordo com o remetente ou o autor da chamada (Figura 13).

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

No Android 8.0 (API de nível 26) 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 relacionados a saques e depósitos. Nesse caso, o usuário pode escolher entre permitir notificações de saques, notificações de depósitos ou ambas no modo de prioridade. Nos dispositivos com Android 7.1 (API de nível 25) e versões anteriores, os usuários podem permitir o envio de notificações de acordo com a configuração de cada app, em vez de cada canal.

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

Notificações para serviços em primeiro plano

Uma notificação é necessária quando seu app estiver executando um "serviço em primeiro plano", ou seja, um Service executando 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 "primeiro plano".

Para saber mais, leia Execução de serviço em primeiro plano. Se você estiver criando um player de mídia, leia também Como usar as notificações MediaStyle com um serviço em primeiro plano.

Limites de postagem

A partir do Android 8.1 (API de nível 27), 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 muitas atualizações forem postadas em uma única notificação com uma frequência grande (várias em menos de um segundo), o sistema poderá ignorar algumas atualizações.

Compatibilidade de notificações

Desde o Android 1.0, a IU do sistema de notificações e as APIs relacionadas às notificações evoluíram continuamente. Para usar os recursos da API de notificação mais recente e manter a compatibilidade com dispositivos mais antigos, use a biblioteca de suporte da API de notificação: NotificationCompat e as subclasses dela, além do NotificationManagerCompat. Isso permitirá que você evite escrever códigos condicionais 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. É importante lembrar que a disponibilidade de um método na NotificationCompat não garante que o recurso correspondente será fornecido em dispositivos mais antigos. Em alguns casos, chamar uma API nova resulta no não funcionamento em dispositivos mais antigos. Por exemplo, NotificationCompat.addAction() mostra o botão de ação em um dispositivo que opera somente o Android 4.1 (API de nível 16) e versões mais recentes.

Veja a seguir um resumo das alterações de comportamento mais importantes nas notificações do Android.

Android 4.1, API de nível 16

  • Introduziu modelos de notificação expansíveis (chamados de estilos de notificação), permitindo que haja uma área maior de conteúdo para exibir informações. Os usuários podem deslizar para cima/baixo com um dedo para expandir uma notificação.
  • Também introduziu a capacidade de adicionar ações a uma notificação na forma de botões.
  • Acrescentou a possibilidade de usuários desativarem as notificações para apps individuais nas configurações.

Android 4.4, API de nível 19 e 20

  • Os serviços de listener de notificações foram adicionados à API.
  • O suporte para Android Wear (agora chamado de Wear OS) foi adicionado na API de nível 20.

Android 5.0, API de nível 21

  • Introduziu as notificações na tela de bloqueio e as de informações básicas.
  • O usuário agora pode colocar o smartphone no modo Não perturbe e configurar quais notificações podem causar interrupções quando o dispositivo estiver no modo "Somente prioridade".
  • Foram adicionados métodos à API para definir se uma notificação é exibida na tela de bloqueio (setVisibility()) e para especificar a versão "pública" do texto da notificação.
  • Inclusão do método setPriority(), que informa ao sistema o nível de "interrupção" que a notificação terá. Por exemplo, configurar um nível alto faz com que a exibição seja feita como uma notificação de informações básicas.
  • Adição de suporte à pilha de notificações para dispositivos Android Wear, agora chamados de Wear OS. Inserção de notificações em uma pilha com setGroup(). As pilhas de notificação ainda não eram compatíveis com tablets e smartphones. Elas ficariam conhecidas posteriormente como grupos ou pacotes.

Android 7.0, API de nível 24

  • Os modelos de notificação foram reformulados para enfatizar a imagem principal e o avatar.
  • Três modelos de notificação foram adicionados: um para apps de mensagens e os outros dois para decorar exibições de conteúdo personalizadas com a possibilidade de expansão e outras decorações do sistema.
  • Compatibilidade para grupos de notificação adicionada para dispositivos portáteis (smartphone e tablets). Usa a mesma API que as pilhas de notificação do Android Wear (agora chamado Wear OS) introduzidas no Android 5.0 (API de nível 21).
  • Os usuários podem responder diretamente dentro de uma notificação usando a resposta in-line. Eles podem inserir um texto que será roteado para o app principal da notificação.

Android 8.0, API de nível 26

  • As notificações individuais agora precisam ser colocadas em um canal específico.
  • Os usuários agora podem desativar as notificações por canal, em vez de desativar todas as notificações de um app.
  • Apps com notificações ativas exibem um "indicador" de notificação sobre o ícone do app na tela inicial.
  • Os usuários agora podem adiar uma notificação na gaveta. Você pode definir um tempo limite automático para uma notificação.
  • Você também pode definir a cor de fundo da notificação.
  • Algumas APIs relacionadas aos comportamentos de notificações 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