Notificações de conversas e widgets

O Android 11 adiciona suporte para personalizar o comportamento e o posicionamento das notificações de conversa na aba Notificações por prioridade e nível de alerta, permitindo que as conversas sejam marcadas como importantes e que bolhas específicas de conversa sejam iniciadas no espaço de conversa.

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

  • O recurso Conversas recentes em Configurações permite que os usuários personalizem o comportamento de notificação para conversas recentes sem esperar por uma notificação.

  • O recurso Conversation Widget permite que os usuários abram facilmente os bate-papos na tela inicial, oferecendo uma visão rápida das conversas recentes.

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

Visão geral das notificações de conversa

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

A primitiva Conversations pode ser usada da seguinte forma:

  • Para compartilhar dados de conversas entre os aplicativos em todo o sistema por meio do Sharesheet (já no Android 10).

  • Para dirigir bolhas ( atalhos no Android 11). Consulte a Figura 1 .

  • Para participar do novo espaço de Conversa em cima da sombra de Notificação (implementada no Android 11). Consulte a Figura 2 .

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

    conv_bubbles

    Figura 1: Notificação sendo lançada como uma bolha da gaveta de notificações

    conv_notification

    Figura 2: Espaço de conversa localizado na parte superior da aba Notificação

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 Conversa.

Os parceiros GMS são obrigados a implementar o seguinte:

  • Um novo espaço de Conversas como uma seção separada na parte superior da aba Notificação.
  • Um estilo de notificação que permite e dá suporte ao padrão de bolha específico da Conversa.

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

Consulte a implementação de referência a seguir 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 aplicativos que oferecem suporte total à API Conversation veem suas notificações na nova seção e podem personalizar essas notificações por conversa em vez do NotificationChannel genérico.

  2. As bolhas específicas de conversa estão funcionando.

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

  • Testes CTS.

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

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

Visão geral dos widgets de conversa

No Android 12, o recurso Conversation Widget baseia-se nas representações de conversa criadas no Android 11 (conforme descrito na seção anterior), permitindo que os aplicativos forneçam status para as conversas exibidas nos widgets de conversa.

conv_widgets

Figura 3: Conversas exibidas nos widgets de conversa

O recurso Conversation Widget no Android 12 promove a conexão, permitindo que os usuários abram bate-papos facilmente na tela inicial. Os widgets são atalhos aprimorados que permitem que os usuários retornem com eficiência às suas conversas enquanto mostram trechos dos status das conversas.

O parceiro deve implementar o seguinte:

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

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

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

Veja a implementação de referência a seguir 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/

Costumização

O recurso de widgets de conversação não pode ser ativado ou desativado. No entanto, um parceiro pode alterar 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. Com um toque longo no Launcher, um novo widget de conversa para uma conversa pode ser adicionado por meio do seletor de widgets. Veja a figura 4 para a IU 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 widgets e widgets podem alterar seus tamanhos com base em seu inicializador atual. Seus layouts de widget devem funcionar bem com diferentes tamanhos de Launcher em diferentes dispositivos e no redimensionamento do widget.

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

  • Testes CTS (PeopleManagerTest) para as superfícies da API.

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