Visão geral de notificações

Uma notificação é uma mensagem que o Android exibe fora da interface do seu 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 da notificação.

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 design e padrões de interação de notificações, consulte o Guia de design de notificações.

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 podem ver 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. No Android 13, essa visualização expandida inclui um botão que permite aos usuários interromper um app que tem serviços em primeiro plano em andamento.

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

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

No Android 5.0 e versões mais recentes, as notificações podem aparecer brevemente em uma janela flutuante chamada notificação de informações básicas. Esse comportamento normalmente ocorre 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 é exibida quando o app emite a notificação. Ela desaparece após um momento, mas permanece 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 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 (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.

É possível definir programaticamente se as notificações postadas pelo app serão mostradas 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 detalhes visível nas notificações da tela de bloqueio ou desativar todas essas notificações. 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 visibilidade da tela de bloqueio.

Indicador do ícone do app

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

Os usuários podem tocar no ícone de um app e mantê-lo pressionado para conferir as notificações dele. Eles podem dispensar as notificações ou interagir com elas nesse menu, de maneira semelhante à gaveta de notificações.

Figura 5. Insígnias de notificação e menu de tocar e manter pressionado.

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

Dispositivos Wear OS

Se o usuário tiver um dispositivo Wear OS pareado, todas as notificações vão aparecer nele automaticamente, incluindo detalhes expansíveis e 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, incluindo 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, e seu app define o conteúdo de cada parte do modelo. Alguns detalhes da notificação aparecem apenas 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 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 substituí-lo usando setWhen() ou ocultá-lo usando setShowWhen(false).
  4. Ícone grande: opcional; geralmente usado apenas para fotos de contatos. Não o use no í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 no app quando receber um toque. Além dessa ação de notificação padrão, você pode adicionar botões de ação para concluir uma tarefa relacionada ao app pela 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 (API de nível 24), é possível 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.

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, seja qual for o fluxo de trabalho iniciado pela ação. 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 abaixo:

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 aplicando um modelo extra, como mostrado 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, no estilo de caixa de entrada, com uma conversa de chat ou com controles de reprodução de mídia. Para mais informações, leia Criar uma notificação expansível.

Grupos e atualizações de notificação

Para evitar sobrecarregar os usuários com notificações múltiplas ou redundantes quando você tiver outras 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 atualizações de conversas.

No entanto, caso seja necessário enviar várias notificações, agrupe as notificações separadas em um grupo, disponível no Android 7.0 e 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 de notificações e cada notificação dentro dele para ver mais detalhes, conforme mostrado na Figura 10.

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

Para aprender a 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. Caso contrário, elas não serão exibidas. Isso permite que os usuários desativem canais de notificação específicos do seu app, em vez de desativar todas as notificações. Os usuários podem controlar as opções visuais e auditivas para cada canal nas configurações do sistema Android, como mostrado na Figura 11. Os usuários também podem tocar em uma notificação e mantê-la pressionada para mudar o comportamento 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 notificações para cada app. Efetivamente, 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 por ele. Um app também 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 postadas no mesmo canal têm o mesmo comportamento. Isso é descrito na seção a seguir.

Para mais informações, 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 som e a imagem do usuário. Quanto maior a importância de uma notificação, mais interruptiva ela é.

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: 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, independente da importância, aparecem em locais não interruptivos na interface do sistema, como na gaveta de notificações e como um selo no ícone na tela de início. No entanto, é possível modificar a aparência do indicador de notificação.

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 normalmente na interface do sistema, a menos que o usuário especifique o contrário.

Existem 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. No caso de mensagens e chamadas, os usuários podem filtrar com base no remetente ou autor da chamada, como mostrado na Figura 13.

Figura 13. Os usuários podem permitir notificações com base nas 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 para categorias específicas do app, também conhecidas como canais, substituindo o modo "Não perturbe" canal por 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, notificações de depósito ou ambas no modo de prioridade.

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

Para configurar suas notificações com essas configurações do usuário, é necessário 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, 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. Esta 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 postagens

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 em uma única notificação com muita frequência, como várias em menos de um segundo, o sistema poderá descartar atualizações.

Compatibilidade de notificações

A interface do sistema de notificações do Android e as APIs relacionadas a notificações evoluem continuamente. Para usar os recursos mais recentes da API Notification e oferecer suporte a dispositivos mais antigos, use a API Notificações da Biblioteca de Suporte, NotificationCompat e as subclasses dela, bem como a 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 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 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 notificações de alerta.

  • Permite que o usuário coloque o smartphone no modo "Não perturbe" e configure quais notificações têm permissão para interrompê-las quando o dispositivo estiver no modo somente prioridade.

  • Adição de métodos para definir se uma notificação será exibida 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 a notificação apareça como uma notificação de alerta.

  • Adiciona suporte a pilhas de notificação para dispositivos Android Wear (agora chamados de Wear OS). Colocar notificações em uma pilha usando setGroup(). Pilhas de notificações, mais conhecidas 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

  • Reformula 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 outros dois para decorar visualizações de conteúdo personalizadas com a affordance expansível 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 que as pilhas de notificação do Android Wear (agora chamado 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 é então 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 exibam 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. É possível definir um tempo limite automático para uma notificação.

  • Permite definir a cor do plano 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() no 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 de tela cheia a apps que oferecem 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 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 está definida. Isso não se aplica às notificações CallStyle se a flag Notification.FLAG_ONGOING_EVENT estiver definida ou ao controlador de política de dispositivo (DPC) e aos pacotes de suporte para empresas. Isso também não se aplica quando o smartphone está bloqueado ou se o usuário seleciona Limpar tudo.