Notificações e widgets de conversa

O Android 11 adicionou suporte à personalização do comportamento e do posicionamento de notificações de conversa na aba de notificações por nível de prioridade e alerta. Isso permite que as conversas sejam marcadas como importantes e que os balões específicos sejam iniciados no espaço de conversa.

Com base nesses recursos do Android 11, o Android 12 oferece dois novos recursos de conversa:

  • Com o recurso "Conversas recentes" nas Configurações, os usuários podem personalizar o comportamento das notificações de conversas recentes sem esperar por uma notificação.

  • Com o recurso de widget de conversa, os usuários podem abrir chats facilmente na tela inicial e ter uma visão rápida das conversas recentes.

Este documento descreve os aspectos de implementação, personalização e validação de notificações e widgets de conversa.

Visão geral das notificações de conversa

O Android 11 apresenta uma nova primitiva do sistema, a Conversation, representada pelo objeto de atalho de compartilhamento (lançado com o Android 9).

A primitiva "Conversas" pode ser usada da seguinte maneira:

  • Para compartilhar dados de conversas entre os apps no sistema usando a folha de compartilhamento (já disponível no Android 10).

  • Para balões de direção(atalhos no Android 11). Consulte a Figura 1.

  • Para participar do novo espaço de conversa na parte de cima da tela de notificações (implementado no Android 11). Confira a Figura 2.

  • Para criar widgets de conversa (implementados no Android 12).

    conv_bubbles

    Figura 1:notificação iniciada como balão na gaveta de notificações

    conv_notification

    Figura 2:espaço de conversa localizado na parte de cima da aba de notificações

Além de vincular ao atalho que representa a conversa, a notificação também usa MessagingStyle para incluir a última mensagem da conversa no espaço "Conversas".

Os parceiros do GMS precisam implementar o seguinte:

  • Um novo espaço de conversas como uma seção separada na parte de cima da tela de notificações.
  • Um estilo de notificação que permite e oferece suporte ao padrão de balão específico da conversa.

Os parceiros que implementam o recurso Conversas também precisam implementar as conversas importantes. No entanto, a implementação das Conversas pode ser alinhada com conceitos de OEM de natureza semelhante. No geral, os parceiros têm a liberdade de alinhar a seção de conversa com a interface do sistema específica deles. O parceiro não precisa modificar nem implementar extensões/código HAL/driver/kernel.

Consulte a seguinte implementação de referência nas seções SystemUI e PeopleService no AOSP:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

Validação

Para garantir que sua versão do recurso funcione conforme o esperado, verifique o seguinte:

  1. Os apps que oferecem suporte total à API Conversation exibem as notificações na nova seção e podem personalizar essas notificações por conversa em vez de pelo NotificationChannel genérico.

  2. Os balões específicos de conversa estão funcionando.

Para validar a implementação, use os seguintes testes no pacote de notificações:

  • Testes do CTS.

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • Testes do CTS Verifier.

    cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
    
    

Visão geral dos widgets de conversa

No Android 12, o recurso widget de conversa é baseado nas representações de conversa criadas no Android 11 (como descrito na seção anterior), permitindo que os apps forneçam status para essas conversas, que são exibidas nos widgets de conversa.

conv_widgets

Figura 3:conversas exibidas em widgets de conversa

O recurso widget de conversa do Android 12 promove a conexão, permitindo que os usuários abram chats facilmente na tela inicial. Os widgets são atalhos aprimorados para que os usuários voltem com eficiência às conversas, enquanto exibem trechos dos status das conversas.

O parceiro precisa implementar o seguinte:

  1. Um widget fornecido pela SystemUI.
  2. Um fluxo para adicionar esses widgets na tela de seleção.
  3. Suporte para redimensionamento de widgets da seguinte forma:

Esteja ciente das seguintes dependências ao implementar widgets de conversa:

  • O parceiro não precisa modificar nem implementar código HAL/driver/kernel.
  • A API Status, que permite que os apps adicionem informações de status ou disponibilidade a uma conversa e ao widget associado, é usada para implementação.
  • O processo é o mesmo nas novas implementações de dispositivos e nas implementações de upgrade.
  • O recurso widgets de conversa depende de um novo recurso lançado no Android 12, que armazena em cache conversas vistas recentemente (de notificações, por exemplo). Esse último recurso permite expandir a lista de conversas que um usuário pode adicionar à tela inicial.

Confira a seguinte implementação de referência nos arquivos SystemUI e Launcher3:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

Personalização

Não é possível ativar ou desativar o recurso de widgets de conversa. No entanto, um parceiro pode mudar os layouts dos modelos de widget, desde que os requisitos do GMS sejam atendidos.

Validação

Para garantir que sua versão do recurso funcione conforme o esperado, verifique o seguinte:

  1. Ao pressionar e manter pressionado o Launcher, um novo widget de conversa pode ser adicionado usando o seletor de widgets. Confira a Figura 4 para ver a interface do seletor de widgets:

    widget_picker

    Figura 4:IU do seletor de widgets para adicionar um novo widget de conversa

  2. Ao enviar notificações para o dispositivo da conversa selecionada, o widget é atualizado para refletir essas notificações.

  3. Ao aplicar status a essa conversa usando a API ConversationStatus, o widget reflete esses status.

  4. Os usuários podem redimensionar os widgets, e eles podem mudar de tamanho com base no Launcher atual. Os layouts de widget precisam funcionar bem com diferentes tamanhos de iniciadores em dispositivos diferentes e ao redimensionar o widget.

Para validar a implementação, use os seguintes testes no pacote de notificações:

  • Testes CTS (PeopleManagerTest) para as interfaces da API.

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • Testes manuais para o requisito do GMS: Conversas.