As atualizações em tempo real fornecem um resumo de atualizações importantes para que os usuários possam acompanhar o progresso sem abrir o app. O sistema promove as notificações de atualização em tempo real, embora os usuários possam dispensar ou rebaixar temporariamente uma notificação de atualização em tempo real para uma notificação padrão. As notificações promovidas aparecem com mais destaque nas plataformas do sistema, incluindo na parte de cima da gaveta de notificações e na tela de bloqueio, além de um ícone na barra de status. As notificações de atualizações em tempo real precisam seguir os princípios de notificação para fornecer informações breves, oportunas e relevantes.
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 em tempo real:
- Precisa ser Standard Style,
BigTextStyle,CallStyle,ProgressStyleouMetricStyle. - É necessário solicitar a seguinte permissão que não é de execução no manifesto do Android:
android.permission.POST_PROMOTED_NOTIFICATIONS. - É necessário solicitar a promoção usando
EXTRA_REQUEST_PROMOTED_ONGOINGouNotificationCompat.Builder#setRequestPromotedOngoing. - Precisa ser
ongoing(definirFLAG_ONGOING_EVENT). - Precisa ter um conjunto
contentTitle. - NÃO pode ter nenhum
customContentViewdefinido (semRemoteViews). - NÃO pode ser o resumo de um grupo que usa
setGroupSummary. - NÃO pode
setColorizedparaTRUE. - 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_ONGOINGindica 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 em tempo real do app nas configurações.NotificationManager.canPostPromotedNotifications()verifica se o app pode postar uma notificação promocional, por exemplo, se o usuário a 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 às Configurações para ativar 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 que está em andamento, com um início e um fim distintos. Se uma atividade ocorreu no passado, não use uma atualização em tempo real. Em vez disso, use uma notificação padrão. Isso também vale para eventos que ainda não começaram, embora os que estão prestes a começar possam usar uma atualização em tempo real.
As Atualizações em Tempo Real representam atividades em andamento. Não use as Atualizações em Tempo Real para oferecer acesso acelerado à funcionalidade do app. Se você 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, rastreamento ativo de viagens compartilhadas e rastreamento ativo de entrega de comida.
- Usos inadequados:anúncios, promoções, mensagens de chat, alertas, próximos eventos da agenda e acesso rápido aos recursos do app.
Iniciado pelo usuário
A maioria das Atualizações em Tempo Real deve representar atividades acionadas explicitamente 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 as relacionadas ao ambiente, aos interesses ou aos próximos eventos do usuário, em uma atualização em tempo real. Não permita que atividades acionadas por terceiros gerem atualizações em tempo real.
Às vezes, um usuário pode realizar uma ação que inicia uma atividade para algum momento no futuro. Por exemplo, se o usuário comprar ingressos para um voo ou show, se inscrever em um torneio ou indicar de outra forma que vai comparecer a um evento sensível. Nesses casos, pode ser apropriado mostrar automaticamente uma atualização em tempo real quando o evento programado começar. No entanto, os apps precisam ajustar os acionadores para que apareçam apenas quando a atividade for iminente. Se o usuário indicar explicitamente que quer começar a monitorar um evento em segundo plano, como um jogo de futebol, você poderá começar a postar atualizações em tempo real para esse evento. No entanto, você também precisa incluir uma ação Desfixar na notificação associada.
Sensível ao tempo
Mostre uma atualização em tempo real apenas se ela exigir a atenção do usuário durante toda a atividade. Um caso de uso importante para as Atualizações em Tempo Real é o monitoramento, em que o usuário se beneficia significativamente ao dar uma olhada na Atualização em Tempo Real para acompanhar o estado em evolução da atividade.
Uma atualização em tempo real costuma ser adequada para atividades que alternam entre atualizações em tempo real e notificações normais. Por exemplo, mostrar uma notificação de cartão de embarque é apropriado 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 chegar ao aeroporto ou local ou quando o embarque começar. Por outro lado, uma atualização em tempo real não é adequada para rastrear um pacote, já que o usuário não precisa monitorar isso constantemente.
Práticas de UX
Use o ícone do rastreador para visualizar o estado. Isso pode ser atualizado dinamicamente.
Quando um HEC estiver sendo calculado ou ainda não estiver disponível, não mostre um estado vazio. Forneça um texto de preenchimento ativo, como "Pensando..." ou "Traçando novo trajeto...", para indicar que o sistema está funcionando, como mostrado no exemplo.
Ícones de status
Os ícones de status permitem que os usuários acompanhem 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 notificação centrada no progresso.
Notification.Builder#setSmallIcon.
Notification.Builder#setShortCriticalText para mostrar o horário absoluto.
Notification.Builder#setShortCriticalText para transmitir informações essenciais.Quando o tempo
O horário aciona uma contagem regressiva para a longevidade da notificação, a menos que ela seja dispensada ou atualizada. Os marcadores abaixo descrevem como o tempo funciona em várias situações:
- O horário de início é pelo menos dois minutos no futuro: se o horário atual for 10h05 e o horário de início estiver definido como 10h10, o ícone vai mostrar 5 min.
- Quando o horário está no passado: o texto não é mostrado.
- Um timer no ícone pode ser mostrado ao usar o cronômetro para o tempo.
Consulte
setUsesChronometeresetChronometerCountdown. O cronômetro é mostrado no ícone enquanto for positivo. - Você não quer que o horário apareça na notificação: use
setShowWhenparaFALSE.
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. O texto só vai aparecer se couber inteiro no ícone. O texto é exibido de acordo com os seguintes critérios:
- Se tiver menos de 7 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.
Wear OS
As Atualizações em Tempo Real são conectadas a alguns dispositivos Wear OS. Para orientações sobre esse comportamento de ponte, bem como sobre como criar atualizações em tempo real locais para o Wear OS, consulte o guia de atualizações em tempo real do Wear OS.
Dispensa
Os usuários podem controlar a visibilidade das notificações na aba de notificações. Postar atualizações em tempo real indesejadas pode fazer com que os usuários revoguem a permissão de postagem de um app.
Para evitar que os usuários desativem completamente as atualizações em tempo real, evite postar atualizações
que eles possam dispensar. Não reposte as 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.
Perguntas frequentes
Pergunta:o que é o ponto branco no final da barra de progresso?
Resposta:o ponto branco no final da barra de progresso sinaliza visualmente o fim dela.
Pergunta:por que as notificações personalizadas não são compatíveis com as atualizações em tempo real?
Resposta:as notificações personalizadas dificultam os testes e a UX consistente,
já que o comportamento delas varia significativamente entre as versões do Android e os fabricantes
de dispositivos. Evite notificações personalizadas usando RemoteViews.