Visão geral das notificações

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

Esta página fornece uma visão geral de onde as notificações aparecem e dos recursos disponíveis. Caso queira começar a criar notificações, consulte Criar uma notificação.

Para saber mais sobre o projeto e os padrões de interação, consulte o Guia de criação de notificações. Além disso, consulte o Exemplo de notificações do Android para ver uma demonstração das práticas recomendadas de uso da API Notification.Style em aplicativos para dispositivos móveis e wearable.

Aparecimentos em um dispositivo

As notificações aparecem para os usuários em diversos locais e formatos, como um ícone na barra de status, uma entrada mais detalhada na gaveta de notificações, um indicador no ícone do aplicativo ou em wearables pareados automaticamente.

Barra de status e gaveta de notificações

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

Imagem 1. Os ícones de notificação aparecem à esquerda 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 realizar ações com a notificação.

Imagem 2. Notificações na gaveta

Os usuários podem arrastar uma notificação para baixo na gaveta e assim revelar a visualização expandida, que mostra botões de ação e conteúdo adicional, caso tenham sido fornecidos.

A notificação permanece visível na gaveta até ser dispensada pelo aplicativo 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.

Imagem 3. Uma notificação de informações básicas é exibida na frente do aplicativo em primeiro plano

A notificação de informações básicas aparece assim que o aplicativo envia a notificação e desaparece após alguns instantes, mas continua visível na gaveta de notificações, como de costume.

Estes são alguns exemplos de condições que podem acionar esse tipo de notificação:

  • A atividade do usuário está em modo de tela cheia (o aplicativo usa fullScreenIntent)
  • A notificação tem alta prioridade e usa toques ou vibrações nos dispositivos que operam o Android 7.1 (API de nível 25) e versões posteriores.
  • O canal de notificação tem alta importância em dispositivos que operam o Android 8.0 (API de nível 26) e versões posteriores.

Tela de bloqueio

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

É possível definir programaticamente o nível de detalhe visível nas notificações postadas pelo aplicativo em uma tela de bloqueio segura, ou mesmo se a notificação será de fato exibida nessa tela.

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

Imagem 4. Notificações na tela de bloqueio com conteúdo confidencial oculto

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

Indicador do ícone do aplicativo

Nos inicializadores compatíveis em dispositivos que operam o Android 8.0 (API de nível 26) e versões posteriores, os ícones de aplicativos indicam novas notificações com um “indicador" colorido (também conhecido como "ponto de notificação") no ícone na tela de início do aplicativo correspondente.

Os usuários podem pressionar o ícone do aplicativo durante alguns segundos para ver as notificações desse aplicativo. Em seguida, eles podem dispensar ou agir nas notificações nesse menu, de forma semelhante à gaveta de notificações.

Imagem 5. Indicadores de notificação e o menu de pressionamento longo

Para saber mais sobre como funcionam os indicadores, consulte Indicadores de notificação.

Dispositivos Wear OS

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

Também é possível melhorar a experiência por meio da personalização de algumas aparências em wearables e fornecer ações diferentes, inclusive respostas sugeridas e entradas de texto por voz. Para saber mais, consulte como adicionar recursos específicos para wearables à sua notificação.

Imagem 6. Notificações exibidas automaticamente em um dispositivo Wear OS pareado

Anatomia da notificação

O design de uma notificação é determinado por modelos de sistemas: seu aplicativo simplesmente define os conteúdos de cada porção do modelo. Alguns detalhes da notificação aparecem somente na visualização expandida.

Imagem 7. Uma notificação com dados básicos

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

  1. Ícone pequeno: é obrigatório e configurado com setSmallIcon().
  2. Nome do aplicativo: é fornecido pelo sistema.
  3. Data e hora: informação fornecida pelo sistema, mas pode ser modificada com setWhen() ou ocultada com setShowWhen(false).
  4. Ícone grande: é opcional (normalmente usado somente para fotos de contatos, não use como ícone do aplicativo) e configurado com setLargeIcon().
  5. Título: é opcional e definido com setContentTitle().
  6. Texto: é opcional e definido com setContentText().

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

Ações da notificação

Embora não seja obrigatório, é recomendado que todas as notificações abram uma atividade adequada do aplicativo ao serem tocadas. Além dessa ação de notificação padrão, é possível adicionar botões de ação que concluam uma tarefa relacionada ao aplicativo a partir da notificação (muitas vezes sem abrir uma atividade), conforme exibido na imagem 9.

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

A partir do Android 7.0 (API de nível 24), você também pode adicionar uma ação para responder a mensagens ou inserir outros textos diretamente de uma 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 sugeridos.

A adição de botões de ação é explicada mais detalhadamente em Criar uma notificação.

Notificação expansível

Por padrão, o conteúdo do texto da notificação é truncado para caber em uma linha. Se quiser que sua notificação seja mais longa, você pode ativar uma área de texto maior e expansível. Para isso, aplique um modelo adicional, como exibido na imagem 8.

Imagem 8. Uma notificação expansível para texto maior

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

Embora seja recomendado que você sempre use esses modelos para garantir compatibilidade de design adequada em todos os dispositivos, se for necessário, também é possível criar um layout de notificação personalizado.

Grupos e atualizações de notificação

Para evitar sobrecarregar os usuários com notificações redundantes ou em excesso quando tiver atualizações adicionais, considere fazer a atualização de uma notificação existente em vez de enviar uma nova ou considere usar a notificação em estilo caixa de entrada para mostrar atualizações em conversas.

No entanto, se for necessário entregar várias notificações, considere agrupá-las (recurso disponível no Android 7.0 e em versões posteriores). Um grupo de notificações permite que você recolha várias delas em somente uma postagem na gaveta de notificações, com um resumo. Assim o usuário pode expandir a notificação para revelar os detalhes de cada uma individualmente.

Ele pode expandir progressivamente o grupo e cada notificação dentro dele para verificar mais detalhes.

Imagem 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. Caso contrário, elas não serão exibidas. Ao categorizar as notificações em canais, os usuários podem desativar canais de notificação específicos para o aplicativo (em vez de desativar todas as notificações). Eles também podem controlar as opções visuais e auditivas de cada canal: tudo nas configurações de sistema do Android (imagem 11). Os usuários também podem pressionar uma notificação durante alguns segundos para mudar os comportamentos do canal associado.

Nos dispositivos que operam o Android 7.1 (API de nível 25) e versões anteriores, somente é possível gerenciar as notificações por aplicativo (de fato, cada aplicativo tem somente um canal no Android 7.1 e em versões anteriores).

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

Um aplicativo pode ter vários canais de notificação: um canal separado para cada tipo de notificação enviada. Além disso, o aplicativo pode criar canais de notificação em resposta às escolhas feitas pelos usuários. Por exemplo, é possível definir canais de notificação separados para cada grupo de conversa criado por um usuário em um aplicativo de mensagens.

Também é no canal que você especifica o nível de importância das suas notificações no Android 8.0 e em versões posteriores. Assim todas as notificações postadas no mesmo canal de notificação têm comportamentos iguais.

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 interromperá o usuário (visual e auditivamente). Quanto maior for a importância de uma notificação, mais interrupção ela causará.

No Android 8.0 (API de nível 26) e em versões posteriores, essa importância é determinada pela importance do canal em que a notificação foi postada. Os usuários podem alterar a importância de um canal de notificação nas configurações do sistema (imagem 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.

Imagem 12. Os usuários podem alterar a importância de cada canal no Android 8.0 e em versões posteriores

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

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

Todas as notificações, independentemente da importância, são exibidas nos locais da IU do sistema sem interrupção, como na gaveta de notificações e como um indicador no ícone na tela de início (embora seja possível modificar a aparência do indicador de notificação).

Para saber mais, consulte 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 os sons e as vibrações de todas as notificações. As notificações continuam a ser exibidas normalmente na IU do sistema, a não ser 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, inclusive de alarmes, música, vídeos e jogos.
  • Somente alarmes: bloqueia todos os sons e vibrações, exceto de alarmes.
  • Somente prioridade: os usuários podem configurar quais categorias do sistema podem causar interrupção (como somente alarmes, lembretes, eventos, ligações ou mensagens). Para mensagens e ligações, eles também podem escolher filtrar com base no remetente ou no autor da chamada (imagem 13).

Imagem 13. Os usuários podem permitir notificações de acordo com as categorias do sistema (à esquerda) e com base no responsável pela mensagem ou ligação (à direita).

No Android 8.0 (API de nível 26) e em versões posteriores, os usuários também podem permitir notificações de acordo com categorias específicas do aplicativo (também conhecidas como canais) por meio da modificação do modo Não perturbe de cada canal. Por exemplo, um aplicativo de pagamentos pode ter canais para notificações relacionadas a saques e depósitos. Nesse caso, o usuário pode escolher permitir notificações de saques, depósitos ou os dois tipos no modo prioritário. Nos dispositivos que operam o Android 7.1 (API de nível 25) e versões anteriores, os usuários podem permitir notificações de acordo com cada aplicativo, em vez de cada canal separadamente.

Para configurar suas notificações de forma adequada a essas definições do usuário, você precisa definir uma categoria e um canal para todo o sistema.

Notificações para serviços em primeiro plano

Uma notificação é obrigatória quando seu aplicativo está executando um "serviço em primeiro plano": um Service que opera em segundo plano com vida longa e que é perceptível ao usuário, como um reprodutor 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 saber mais, consulte Execução de serviço em primeiro plano. Caso você esteja criando um reprodutor de mídia, leia também Como usar 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 aplicativos não podem emitir sons de notificação mais de uma vez por segundo. Caso seu aplicativo poste várias notificações em um segundo, elas aparecerão como o esperado, mas só a primeira notificação por segundo emitirá um som.

No entanto, o Android também aplica um limite de taxa ao atualizar uma notificação. Se você postar atualizações para uma única notificação de forma muito frequente (várias em menos de um segundo), o sistema poderá ignorar algumas delas.

Compatibilidade da notificação

Desde o Android 1.0, a IU do sistema de notificações e as APIs relacionadas a elas tiveram uma evolução contínua. 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. Assim não é necessário escrever o código condicional para verificar os níveis da API, uma vez que essas APIs fazem o processamento da informação para 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 recentemente introduzida resulta em um ambiente autônomo nesses dispositivos. 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 posteriores.

A informação a seguir é um resumo das mudanças de comportamento mais notáveis nas notificações do Android.

Android 4.1, API de nível 16

  • Introduziu os modelos de notificação expansíveis (chamados de estilos de notificação), permitindo uma área de conteúdo de notificação maior para exibir informações. Os usuários podem usar o gesto de deslizar para cima ou para baixo com um dedo para expandir a notificação.
  • Além disso, foi introduzido o recurso de incluir ações adicionais a uma notificação, na forma de botões.
  • Foi inclusa a possibilidade de os usuários desativarem as notificações de acordo com cada aplicativo nas configurações.

Android 4.4, API de nível 19 e 20

  • Os serviços de listener de notificação foram adicionados à API.
  • O suporte ao Android Wear (agora chamado Wear OS) foi incluso na API de nível 20.

Android 5.0, API de nível 21

  • Introduziu a tela de bloqueio e as notificações de informações básicas.
  • Agora os usuários têm a possibilidade de colocar o telefone no modo Não perturbe e configurar quais notificações podem interrompê-los quando o dispositivo está 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).
  • Foi adicionado o suporte às pilhas de notificação para os dispositivos com Android Wear (agora chamado 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 telefones. Elas ficariam conhecidas posteriormente como grupos ou pacotes.

Android 7.0, API de nível 24

  • Os modelos de notificação ganharam novo estilo para enfatizar a imagem principal e o avatar.
  • Foram adicionados três modelos de notificação: um para aplicativos de mensagens e outros dois para decorar as visualizações de conteúdo personalizado com affordance expansível e outras decorações do sistema.
  • Foi concedido suporte a dispositivos portáteis (telefones e tablets) para grupos de notificação. É usada a mesma API das pilhas de notificação do Android Wear (agora chamado Wear OS), introduzida no Android 5.0 (API de nível 21).
  • Possibilidade de os usuários responderem diretamente em uma notificação (eles podem inserir o texto que será encaminhado ao aplicativo pai da notificação) por meio da resposta em linha.

Android 8.0, API de nível 26

  • As notificações individuais agora precisam ser inseridas em um canal específico.
  • Os usuários passam a poder desativar por canal, em vez de desabilitar todas as notificações de um aplicativo.
  • Os aplicativos com notificações ativas mostram um "indicador" de notificação sobre o ícone do aplicativo na tela de início.
  • Agora os usuários podem adiar uma notificação na gaveta. É possível definir um tempo limite automático para a notificação.
  • Você também pode escolher a cor de fundo dela.
  • 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 posteriores.