Visão geral de notificações

Uma notificação é uma mensagem que o Android mostra fora da interface 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 seu app ou realizar uma ação diretamente nela.

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 saber mais sobre o design de notificações e os padrões de interação, consulte o Guia de design de 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 ícone 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 podem ver mais detalhes e realizar 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 aos usuários interromper um app que tenha serviços em primeiro plano em andamento.

Uma notificação permanece visível na gaveta até ser dispensada pelo app ou 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 alerta. Esse comportamento normalmente é para notificações importantes que o usuário precisa saber imediatamente e só aparece se o dispositivo estiver desbloqueado.

Figura 3. Uma notificação de alerta é exibida na frente do app em primeiro plano.

A notificação de alerta aparece quando o app emite a notificação. Ela desaparece após um momento, mas continua visível na gaveta de notificações normalmente.

As condições que podem acionar notificações de alerta 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 exibidas em uma tela de bloqueio segura e, em caso afirmativo, o nível de detalhamento visível.

Os usuários podem usar as configurações do sistema para escolher o nível de detalhamento visível nas notificações da tela de bloqueio ou para desativar todas as notificações dessa tela. 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 da tela de bloqueio.

Indicador do ícone do app

Nas telas de início compatíveis em dispositivos com o Android 8.0 (API de nível 26) e versões mais recentes, os ícones dos 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 conferir as notificações dele. Eles podem dispensar as notificações ou interagir com elas nesse menu, de forma semelhante à gaveta de notificações.

Figura 5. Indicadores de notificação e menu "Tocar e pressionar".

Para saber mais sobre como os ícones funcionam, leia Modificar um selo de notificação.

Dispositivos Wear OS

Se o usuário tiver um dispositivo Wear OS pareado, todas as suas notificações vão aparecer nele automaticamente, incluindo detalhes expansíveis e botões de ação.

É possível melhorar a experiência personalizando a aparência das suas notificações em wearables e fornecendo diferentes ações, incluindo respostas sugeridas e por entrada de texto por voz. Para saber mais, veja como adicionar recursos específicos de 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 seu app define o conteúdo de cada parte do modelo. Alguns detalhes da notificação aparecem somente 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 maneira:

  1. Ícone pequeno: obrigatório, definido usando setSmallIcon().
  2. Nome do app: fornecido pelo sistema.
  3. Carimbo de data/hora: fornecido pelo sistema, mas é possível modificá-lo usando setWhen() ou ocultá-lo usando setShowWhen(false).
  4. Ícone grande: opcional. Geralmente usado apenas para fotos de contatos. 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 de 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 muito mais, leia Criar uma notificação.

Ações da notificação

Embora não seja obrigatório, é uma prática recomendada que cada notificação abra uma atividade adequada do app quando ela for tocada. Além dessa ação de notificação padrão, é possível adicionar botões de ação que executam uma tarefa relacionada ao app na notificação, geralmente sem abrir uma atividade, como 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), é possível adicionar uma ação para responder a mensagens ou inserir outros textos diretamente na 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 precise ser desbloqueado para que o app invoque essa ação, independente do fluxo de trabalho que ela inicie. 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 uma 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 e que possa ser expandida aplicando um modelo extra, como mostrado na Figura 9.

Figura 9. Notificação que pode ser aberta para texto grande.

Também é possível criar uma notificação expansível com uma imagem, no estilo de caixa de entrada, com uma conversa por chat ou com controles de reprodução de mídia. Para saber mais, leia Criar uma notificação que pode ser aberta.

Grupos e atualizações de notificação

Para evitar sobrecarregar os usuários com notificações múltiplas ou redundantes quando houver atualizações adicionais, atualize uma notificação existente em vez de emitir uma nova ou use a notificação no estilo de caixa de entrada para mostrar 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 em versões mais recentes.

Um grupo de notificações permite recolher várias notificações em uma postagem na gaveta de notificações com um resumo. O usuário pode expandir progressivamente o grupo e cada notificação dentro dele para mostrar 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 (API de nível 26), 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 auditivas de cada canal nas configurações do sistema Android, conforme mostrado na Figura 11. Os usuários também podem tocar e manter pressionada uma notificação para mudar os comportamentos do canal associado.

Em dispositivos com o Android 7.1 (nível 25 da API) e versões anteriores, os usuários só podem gerenciar as notificações de cada app. 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 enviada. Um app também pode criar canais de notificação em resposta a escolhas feitas pelos usuários. Por exemplo, você pode configurar canais de notificação separados para cada grupo de conversa 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 quanto ela interrompe o usuário visual e auditivamente. Quanto maior a importância de uma notificação, mais ela pode 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 dela.

No Android 8.0 (nível 26 da API) e versões mais recentes, a importância de uma notificação é determinada pelo 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.

  • Alto: faz 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, independente da importância, aparecem em locais não interruptivos na interface 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 dele.

Para mais informações, leia sobre 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 o som e a vibração de todas as notificações. As notificações ainda aparecem na interface do sistema normalmente, 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 interrompê-los, como apenas alarmes, lembretes, eventos, chamadas ou mensagens. Para mensagens e chamadas, 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 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 para categorias específicas do app, também conhecidas como canais, substituindo o modo Não perturbe em cada canal. Por exemplo, um app de pagamento pode ter canais para notificações relacionadas a saques e depósitos. O usuário pode permitir notificações de saque, de depósito ou ambos no modo prioritário.

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

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

Notificações para serviços em primeiro plano

Uma notificação é necessária quando seu app está executando um serviço em primeiro plano: um Service executado em segundo plano que é de longa duração e perceptível para o usuário, como um player de mídia. Não é possível dispensar essa notificação 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 reproduzir mídia em segundo 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 você publicar atualizações em uma única notificação com muita frequência, como muitas em menos de um segundo, o sistema poderá descartar atualizações.

Compatibilidade de notificações

A interface do sistema de notificação do Android e as APIs relacionadas a notificações estão em constante evolução. Para usar os recursos mais recentes da API de notificação e oferecer suporte a dispositivos mais antigos, use a API de notificação da Biblioteca de Suporte, NotificationCompat e as subclasses dela, assim como NotificationManagerCompat. Isso permite que você evite escrever código condicional para verificar os níveis da API, porque essas APIs processam isso.

A NotificationCompat é atualizada conforme a plataforma evolui para incluir os métodos mais recentes. No entanto, a disponibilidade de um método no 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 importantes por nível da API para notificações do Android.

Android 5.0, API de nível 21

  • Apresenta a tela de bloqueio e as notificações de alerta.

  • Permite que o usuário coloque o smartphone no modo Não perturbe e configura quais notificações podem interromper a atividade quando o dispositivo está no modo somente prioridade.

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

  • Adição do 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 ela apareça como uma notificação de informações básicas.

  • Adiciona suporte a pilhas de notificação para dispositivos Android Wear (agora chamado Wear OS). Coloque as notificações em uma pilha usando setGroup(). As pilhas de notificações, posteriormente conhecidas como grupos ou pacotes, não podem ser usadas em tablets ou smartphones até o Android 7.0 (nível 24 da API).

Android 7.0, API de nível 24

  • Mudança de estilo dos 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 affordance expansível e outras do sistema.

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

  • Permite que os usuários respondam dentro de uma notificação usando a resposta em linha. 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 selo de notificação sobre o ícone do app na tela inicial ou na tela de início.

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

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

  • Move algumas APIs relacionadas a comportamentos de notificação 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 poderá 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 forma como os usuários recebem notificações não dispensáveis, permitindo que eles dispensem a ação das notificações mesmo quando a flag Notification.FLAG_ONGOING_EVENT estiver definida. Isso não se aplica a notificações CallStyle se a sinalização Notification.FLAG_ONGOING_EVENT estiver definida ou no controlador de política de dispositivo (DPC) e nos pacotes de suporte para empresas. Isso também não se aplica quando o smartphone está bloqueado ou quando o usuário seleciona Limpar tudo.