O sistema promove notificações de atualizações dinâmicas. As notificações promovidas aparecem com mais destaque nas interfaces do sistema, incluindo na parte de cima da gaveta de notificações e da tela de bloqueio, e como um ícone na barra de status.

Os cards de notificação promovidos têm as seguintes características de aparência:
- Expandido por padrão
- Não recolhível
Sua notificação precisa atender aos seguintes requisitos para se qualificar como uma atualização ao vivo:
- Precisa ser "Padrão/Sem estilo",
BigTextStyle
,CallStyle
ouProgressStyle
. - É necessário solicitar a seguinte permissão não de execução no manifesto do Android:
android.permission.POST_PROMOTED_NOTIFICATIONS
. - É necessário solicitar a promoção usando
EXTRA_REQUEST_PROMOTED_ONGOING
ouNotificationCompat.Builder#requestPromotedOngoing
. - Precisa ser
ongoing
(definaFLAG_ONGOING_EVENT
). - Precisa ter um
contentTitle
definido. - NÃO pode ter nenhum
customContentView
definido (semRemoteViews
). - NÃO pode ser o resumo de um grupo usando
setGroupSummary
. - Não
setColorized
paraTRUE
. - O canal de notificação NÃO pode ter
IMPORTANCE_MIN
.
Características da promoção
As APIs a seguir ajudam a determinar se o sistema vai promover sua notificação:
Notification.FLAG_PROMOTED_ONGOING
indica se a notificação é promovida.Notification.hasPromotableCharacteristics()
valida se o sistema pode promover a notificação. Esse método não considera se o usuário desativou as atualizações dinâmicas para o app nas configurações.- O
NotificationManager.canPostPromotedNotifications()
verifica se o app pode postar uma notificação promovida, por exemplo, se o usuário ativou ou desativou nas configurações. Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS
é a ação de intent que permite que os apps enviem os usuários para as configurações e ativem esse recurso.
Critérios de uso
Use as atualizações em tempo real para atividades em andamento, iniciadas pelo usuário e sensíveis ao tempo.
Em andamento
Uma atualização em tempo real precisa representar uma atividade em andamento, com um início e um fim distintos. Se uma atividade ocorrer no passado, não use uma atualização em tempo real. Em vez disso, use uma notificação padrão. Isso também é válido para eventos que ainda não começaram, mas os que estão prestes a começar podem usar uma atualização ao vivo.
As atualizações em tempo real representam atividades em andamento. Não use as atualizações dinâmicas para oferecer acesso acelerado à funcionalidade do app. Se quiser fazer isso, use um widget de app ou um bloco personalizado de Configurações rápidas.
- Usos adequados:navegação ativa, chamadas telefônicas em andamento, acompanhamento ativo de caronas e de entregas de comida.
- Usos inadequados:anúncios, promoções, mensagens de chat, alertas, próximos eventos do calendário e acesso rápido aos recursos do app.
Iniciado pelo usuário
A maioria das atualizações dinâmicas representa atividades que são explicitamente acionadas pelo usuário, como iniciar um treino, iniciar a navegação de carro ou chamar um transporte por aplicativo. Não mostre informações ambientais, como o ambiente, os interesses ou os eventos futuros do usuário, em uma atualização dinâmica. Não permita que atividades iniciadas por terceiros gerem atualizações em tempo real.
Às vezes, um usuário pode realizar uma ação que inicia uma atividade por algum tempo no futuro. Por exemplo, se o usuário comprar passagens aéreas ou ingressos para um show, se inscrever em um torneio ou indicar de outra forma a participação em um evento com prazo determinado. Nesses casos, pode ser adequado mostrar automaticamente uma atualização em tempo real quando o evento programado começar. No entanto, os apps precisam ajustar os acionadores para aparecer apenas quando a atividade for iminente. Se o usuário indicar explicitamente que quer começar a monitorar um evento em segundo plano como uma partida de futebol, você pode começar a postar atualizações em tempo real sobre esse evento. No entanto, também é necessário incluir uma ação de desafixar na notificação associada.
Sensível ao tempo
Mostre uma atualização dinâmica apenas se ela exigir a atenção do usuário durante toda a atividade. Um caso de uso importante para as atualizações dinâmicas é o monitoramento, quando o usuário se beneficia significativamente ao dar uma olhada na atualização dinâmica para acompanhar o estado em evolução da atividade.
Uma atualização dinâmica geralmente é adequada para atividades que fazem a transição entre atualizações dinâmicas e notificações normais. Por exemplo, mostrar uma notificação de cartão de embarque é adequado muitas horas antes do voo de um usuário, mas a notificação só deve se tornar uma atualização em tempo real quando o usuário tiver uma necessidade urgente, como quando ele chegar ao aeroporto ou local ou quando o embarque tiver começado. Por outro lado, uma atualização dinâmica não é adequada para rastrear um pacote, já que o usuário não precisa monitorar isso constantemente.
Ícones de status
Com os ícones de status, os usuários podem acompanhar as atualizações em tempo real quando a notificação não está visível. Use setShortCriticalText
ou setWhen
para transmitir
informações importantes sobre o estado da sua notificação centrada no progresso.

Notification.Builder#setSmallIcon
.
Notification.Builder#setShortCriticalText
para mostrar o tempo absoluto.
Notification.Builder#setShortCriticalText
para transmitir informações importantes.Quando o tempo
O tempo "when" aciona uma contagem regressiva para a longevidade da notificação, a menos que ela seja dispensada ou atualizada.
- O horário de quando é pelo menos 2 minutos no futuro: se o horário atual for 10h05 e o horário de quando for definido como 10h10, o ícone vai mostrar "5 min".
- Se o horário for mais de um minuto no passado, a notificação não será mostrada.
- Use
setShowWhen
paraFALSE
se você não quiser que a notificação mostrada na aba tenha um horário.
Aparência do ícone de status
O ícone de status sempre inclui um ícone e, opcionalmente, um texto. O ícone tem uma largura máxima de 96 dp. Mostre o texto dependendo dos seguintes critérios:
- Se tiver menos de sete caracteres, mostre o texto inteiro.
- Se menos da metade do texto for exibida, mostre apenas o ícone.
- Se mais da metade do texto for exibida, mostre o máximo possível.
Dismissal
Os usuários podem controlar a visibilidade das notificações na bandeja de notificações. A publicação de atualizações em tempo real indesejadas pode fazer com que os usuários revoguem a permissão de postagem de um app.
Para impedir que os usuários desativem completamente as atualizações em tempo real, evite postar atualizações que eles possam dispensar. Não poste novamente atualizações em tempo real que o usuário dispensou. Use
setDeleteIntent
para detectar atualizações dispensadas.
Consulte o app de exemplo para testar essas APIs.