Notificações de conversas e widgets

O Android 11 adiciona suporte para personalizar o comportamento e o posicionamento das notificações de conversa na sombra de 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 lançadas 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 chats facilmente na tela inicial, dando uma visão rápida das conversas recentes.

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

Visão geral das notificações de conversa

O Android 11 introduz uma nova primitiva de sistema, a Conversa, 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 através do Sharesheet (já no Android 10).

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

  • Para participar do novo espaço de Conversação no topo da aba Notificação (implementado no Android 11). Consulte a Figura 2 .

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

    conv_bubbles

    Figura 1: Notificação sendo iniciada como um balão na gaveta de notificação

    conv_notification

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

Além do link para o atalho que representa a conversa, a notificação também usa MessagingStyle para incluir a última mensagem da conversa no espaço Conversation.

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 sombra Notificação.
  • Um estilo de notificação que permite e oferece suporte ao padrão de bolha específico da Conversa.

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

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 aplicativos que oferecem suporte total à API de conversação 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 da 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 se baseia 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 que são exibidas em Conversation Widgets.

conv_widgets

Figura 3: Conversas exibidas em widgets de conversa

O recurso Conversation Widget no Android 12 promove a conexão, permitindo que os usuários abram chats facilmente na tela inicial. Os widgets são atalhos aprimorados que permitem aos usuários voltar com eficiência às suas conversas enquanto exibem trechos dos status da conversa.

O parceiro deve implementar o seguinte:

  1. Um widget fornecido por 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:

  • 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ção.
  • O recurso Conversation Widgets depende de um novo recurso lançado no Android 12, que armazena em cache 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.

Consulte 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/

Costumização

O recurso Conversation Widgets 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 widget. Consulte a figura 4 para a interface do usuário 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 a partir 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 os widgets podem alterar seus tamanhos com base em seu Launcher atual. Seus layouts de widget devem funcionar bem com diferentes tamanhos de iniciador 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.