O Android 11 adicionou suporte à personalização do comportamento e do posicionamento de notificações de conversa na aba de notificações por prioridade e nível de alerta. Isso permite que as conversas sejam marcadas como importantes e que os balões específicos da conversa sejam iniciados no espaço de conversa.
Com base nesses recursos do Android 11, o Android 12 oferece dois novos recursos de conversa:
O recurso "Conversas recentes" nas Configurações permite que os usuários personalizem o comportamento de notificação de conversas recentes sem esperar por uma notificação.
O recurso de widget de conversa permite que os usuários abram facilmente os chats na tela inicial, mostrando uma visualização rápida das conversas recentes.
Este documento descreve os aspectos de implementação, personalização e validação das notificações de conversa e dos widgets.
Visão geral das notificações de conversa
O Android 11 apresenta uma nova primitiva do sistema, a conversa, que é representada pelo objeto de atalho de compartilhamento que foi lançado com o Android 9.
A primitiva de conversas pode ser usada da seguinte maneira:
Para compartilhar dados do app Conversas entre os apps do sistema usando a Sharesheet (já disponível no Android 10).
Para direcionar bolhas(atalhos no Android 11). Consulte a Figura 1.
Para participar do novo espaço de conversa na parte de cima da sombra de notificação (implementado no Android 11). Consulte a Figura 2.
Para criar widgets de conversa (implementados no Android 12).
Figura 1:notificação iniciada como balão na gaveta de notificações
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 de conversa.
Os parceiros do GMS precisam implementar o seguinte:
- Um novo espaço de conversas como uma seção separada na parte de cima da sombra 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 de conversas pode ser alinhada a conceitos de OEM de natureza semelhante. No geral, os parceiros têm liberdade para alinhar a seção de conversa com a IU do sistema específica. O parceiro não precisa modificar ou implementar o código/extensões do 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:
Os apps que oferecem suporte total à API Conversation vão receber as notificações na nova seção e poderão personalizar essas notificações por conversa, em vez de pelo 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 CTS Verifier.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Visão geral dos widgets de conversa
No Android 12, o recurso de widget de conversa é baseado nas representações de conversa criadas no Android 11 (conforme descrito na seção anterior), permitindo que os apps forneçam status para as conversas exibidas nos widgets de conversa.
Figura 3. Conversas exibidas nos widgets de conversa.
O recurso de widget de conversa no Android 12 promove a conexão, permitindo que os usuários abram facilmente as conversas 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:
- Um widget fornecido pelo SystemUI.
- Um fluxo para adicionar esses widgets na tela de seleção de widgets.
- Suporte para redimensionamento de widgets da seguinte maneira:
- Use
onAppWidgetOptionsChanged()
para mudar o layout para um tamanho melhor quando o usuário mudar o tamanho do layout ou girar para o modo paisagem. - Use
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
,minResizeHeight
para vincular corretamente as mudanças de tamanho do widget.
- Use
Considere as seguintes dependências ao implementar widgets de conversa:
- O parceiro não precisa modificar nem implementar o 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 para implementações de novos dispositivos e implementações de upgrade.
- O recurso de 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 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/
Personalização
O recurso de widgets de conversa não pode ser ativado ou desativado. No entanto, um parceiro pode mudar os layouts dos modelos de widgets, desde que os requisitos do GMS sejam satisfeitos.
Validação
Para garantir que sua versão do recurso funcione conforme o esperado, verifique o seguinte:
Ao tocar e pressionar o ícone do Launcher, um novo widget de conversa pode ser adicionado pelo seletor de widgets. Consulte a Figura 4 para conferir a interface do seletor de widgets:
Figura 4:IU do seletor de widgets para adicionar um novo widget de conversa
Ao enviar notificações para o dispositivo 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 mudar de tamanho com base no iniciador atual. Seus layouts de widget precisam funcionar bem com diferentes tamanhos de início 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 plataformas da API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Testes manuais para o requisito do GMS: conversas.