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.
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.
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.
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.
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.
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.
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.
As partes mais comuns de uma notificação são indicadas na Figura 7, da seguinte maneira:
- Ícone pequeno: obrigatório, definido usando
setSmallIcon()
. - Nome do app: fornecido pelo sistema.
- Carimbo de data/hora: fornecido pelo sistema, mas é possível modificá-lo usando
setWhen()
ou ocultá-lo usandosetShowWhen(false)
. - Ícone grande: opcional. Geralmente usado apenas para fotos de contatos.
Não use para o ícone do app. Defina usando
setLargeIcon()
. - Título: opcional, definido usando
setContentTitle()
. - 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.
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.
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.
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.
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.
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.
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
paraNotificationChannel
. Por exemplo, useNotificationChannel.setImportance()
em vez deNotificationCompat.Builder.setPriority()
para o Android 8.0 e versões mais recentes.
Android 13.0, API de nível 33
- Adiciona uma permissão de execução. Para que o app envie notificações não isentas, o usuário precisa conceder essa permissão a ele.
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á usarACTION_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çõesCallStyle
se a sinalizaçãoNotification.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.