O Android 11 adiciona suporte para personalizar o comportamento e o posicionamento de Notificações de Conversa na aba Notificações por prioridade e nível de alerta, permitindo que Conversas sejam marcadas como Importantes e balões específicos de conversa sejam lançados 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 bate-papos facilmente na tela inicial, proporcionando uma visão rápida das conversas recentes.
Este documento descreve os aspectos de implementação, personalização e validação de notificações de conversa e widgets.
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 Conversas pode ser usada da seguinte maneira:
Para compartilhar dados de conversas entre os aplicativos do sistema por meio do Sharesheet (já no Android 10).
Para dirigir bolhas ( atalhos no Android 11). Veja a Figura 1 .
Para participar do novo espaço de Conversa na parte superior da aba Notificação (implementado no Android 11). Veja a Figura 2 .
Para criar widgets de conversa (implementados no Android 12).
Figura 1: Notificação sendo lançada como um balão na gaveta de notificações
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 utiliza 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 Conversas como uma seção separada na parte superior da aba Notificação.
- Um estilo de notificação que permite e oferece suporte ao padrão de bolha específico da conversa.
Os parceiros que implementam Conversas também devem 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 a IU do sistema específica. O parceiro não precisa modificar ou implementar HAL/driver/código/extensões do 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 esperado, verifique o seguinte:
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.
Os balões específicos 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 nos Conversation 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 bate-papos facilmente na tela inicial. Os widgets são atalhos aprimorados que permitem aos usuários retornar com eficiência às suas conversas enquanto mostram trechos do status da conversa.
O parceiro deve implementar o seguinte:
- Um widget fornecido pelo SystemUI.
- Um fluxo para adicionar esses widgets na tela de seleção de widgets.
- Suporte para redimensionamento de widget da seguinte forma:
- Use
onAppWidgetOptionsChanged()
para alterar o layout para um layout de melhor tamanho quando o usuário alterar o tamanho do layout ou girar para paisagem. - Use
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
,minResizeHeight
para vincular corretamente as alterações de tamanho do widget.
- Use
Esteja ciente das seguintes dependências ao implementar widgets de conversa:
- O parceiro não precisa modificar ou implementar código HAL/driver/kernel.
- A API 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 poderia adicionar à sua 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 esperado, verifique o seguinte:
Ao manter pressionado o Launcher, um novo widget de conversa para uma conversa pode ser adicionado por meio do seletor de widget. Veja a figura 4 para a UI do seletor de widget:
Figura 4: UI do seletor de widget para adicionar um novo widget de conversa
Ao enviar notificações para o dispositivo a partir da conversa selecionada, o widget é atualizado para refletir essas notificações.
Ao aplicar status a essa conversa usando a API
ConversationStatus
, o widget reflete esses status.Os usuários podem redimensionar widgets e os widgets podem alterar seus tamanhos com base no Launcher atual. Os layouts de seu 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 exigência de GMS - Conversas.