Criar uma notificação com foco no progresso

notificação de progresso na parte de cima da tela
Figura 1. Uma notificação de progresso na parte de cima da aba.

O Android 16 apresenta um novo modelo de notificação para ajudar os usuários a acompanhar com facilidade as jornadas de início ao fim iniciadas por eles. Essas notificações têm visibilidade melhorada nas plataformas do sistema e classificação superior na gaveta de notificações.

Use Notification.ProgressStyle para estilizar notificações centradas no progresso. Os principais casos de uso incluem transporte por aplicativo, entrega e navegação. Nessa classe, é possível indicar estados e marcos em uma jornada do usuário usando pontos e segmentos.

Aulas relevantes

As classes a seguir contêm as diferentes APIs usadas para criar uma notificação do ProgressStyle:

Anatomia e personalização

As imagens a seguir mostram as diferentes partes que compõem as notificações do ProgressStyle:

Figura 2.

A. Cabeçalho - Subtexto

Notification.Builder#setSubText()

B. Cabeçalho: horário

Notification.Builder#setWhen()

C. Título do conteúdo

Notification.Builder#setContentTitle()

D. Texto do conteúdo

Notification.Builder#setContentText()

E. Barra de progresso

Notification.ProgressStyle

F. Botão de ação

Notification.Builder#addAction()

Figura 3. Os apps podem definir uma imagem de veículo para o ícone do rastreador e usar segmentos e pontos para indicar a experiência e os marcos do transporte por aplicativo.

Práticas recomendadas

Use as APIs certas e siga as práticas recomendadas para oferecer a melhor experiência do usuário em atualizações de progresso.

  • Defina os campos certos para atender à visibilidade promovida na aba de notificações.
  • Use os elementos visuais certos para orientar os usuários. Por exemplo, apps de transporte por aplicativo precisam definir uma imagem do veículo e usar a cor mais precisa dele na notificação usando Notification#setLargeIcon.
  • Use uma linguagem concisa e clara para definir o progresso da jornada do usuário. O horário de chegada, o nome do motorista e o estado da viagem são textos importantes que a notificação precisa comunicar.
  • Ofereça ações úteis e relevantes na notificação que simplifiquem a jornada do usuário. Por exemplo, fornecer "Gorjeta" e "Adicionar prato" a um pedido de entrega de comida recém-iniciado são ações úteis antes da entrega.
  • Use segmentos e pontos para indicar estados. Por exemplo, os segmentos podem colorir o estado e a duração do trânsito em um trajeto de transporte por aplicativo. Os pontos representam estados de marcos, como preparação de alimentos, entrega e retirada de passageiros.
  • Atualize a experiência de progresso para refletir com precisão a progressão real da jornada. Por exemplo, as mudanças nas condições de trânsito podem ser refletidas em mudanças nas cores dos segmentos e atualizações no texto.

O snippet de código a seguir mostra como uma notificação ProgressStyle pode ser usada em um contexto de transporte por aplicativo:

var ps =
    Notification.ProgressStyle()
        .setStyledByProgress(false)
        .setProgress(456)
        .setProgressTrackerIcon(Icon.createWithResource(appContext, R.drawable.ic_car_red))
        .setProgressSegments(
            listOf(
                Notification.ProgressStyle.Segment(41).setColor(Color.BLACK),
                Notification.ProgressStyle.Segment(552).setColor(Color.YELLOW),
                Notification.ProgressStyle.Segment(253).setColor(Color.WHITE),
                Notification.ProgressStyle.Segment(94).setColor(Color.BLUE)
            )
        )
        .setProgressPoints(
            listOf(
                Notification.ProgressStyle.Point(60).setColor(Color.RED),
                Notification.ProgressStyle.Point(560).setColor(Color.GREEN)
            )
        )

Consulte o app de exemplo para testar essas APIs.