Android 11 agrega soporte para personalizar el comportamiento y la ubicación de las notificaciones de conversación en el tono Notificaciones por prioridad y nivel de alerta, lo que permite marcar las conversaciones como importantes y lanzar burbujas específicas de la conversación en el espacio de conversación.
Sobre la base de estas funciones de Android 11, Android 12 ofrece dos nuevas funciones de conversación:
La función Conversaciones recientes en Configuración permite a los usuarios personalizar el comportamiento de notificación de conversaciones recientes sin esperar una notificación.
La función Conversation Widget permite a los usuarios abrir fácilmente chats en la pantalla de inicio, brindando una vista rápida de las conversaciones recientes.
Este documento describe los aspectos de implementación, personalización y validación de las notificaciones y widgets de conversaciones.
Descripción general de las notificaciones de conversación
Android 11 introduce una nueva primitiva del sistema, la Conversación, que está representada por el objeto de acceso directo para compartir existente (que se implementó con Android 9).
La primitiva Conversaciones se puede utilizar de la siguiente manera:
Para compartir datos de conversaciones entre las aplicaciones de todo el sistema a través de Sharesheet (ya en Android 10).
Para conducir burbujas ( atajos en Android 11). Ver Figura 1 .
Para participar en el nuevo espacio de Conversación encima del tono de Notificación (implementado en Android 11). Ver Figura 2 .
Para crear widgets de conversación (implementado en Android 12).
Figura 1: Notificación lanzada como una burbuja desde el cajón de notificaciones
Figura 2: Espacio de conversación ubicado en la parte superior del panel de notificaciones
Además de vincular al acceso directo que representa la conversación, la notificación también usa MessagingStyle para incluir el último mensaje de la conversación en el espacio de Conversación.
Los socios de GMS deben implementar lo siguiente:
- Un nuevo espacio de Conversaciones como sección separada encima del tono de Notificación.
- Un estilo de notificación que permite y admite el patrón de burbujas específico de la conversación.
Los socios que implementan Conversaciones también deben implementar Conversaciones importantes. Sin embargo, la implementación de Conversaciones puede alinearse con conceptos OEM de naturaleza similar. En general, los socios tienen la libertad de alinear la sección de conversación con la interfaz de usuario de su sistema específico. El socio no tiene que modificar ni implementar HAL/controlador/código kernel/extensiones.
Consulte la siguiente implementación de referencia en las secciones SystemUI y PeopleService en 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/
Validación
Para asegurarse de que su versión de la función funcione según lo previsto, verifique lo siguiente:
Las aplicaciones que son totalmente compatibles con la API de conversación ven sus notificaciones en la nueva sección y pueden personalizarlas por conversación en lugar de por el NotificationChannel genérico.
Las burbujas de conversación específicas están funcionando.
Para validar la implementación, utilice las siguientes pruebas en el paquete de notificación:
Pruebas CTS.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Pruebas del Verificador CTS.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Descripción general de los widgets de conversación
En Android 12, la función Widget de conversación se basa en las representaciones de conversación creadas en Android 11 (como se describe en la sección anterior) al permitir que las aplicaciones proporcionen el estado de aquellas conversaciones que se muestran en los widgets de conversación.
Figura 3: Conversaciones mostradas en los widgets de conversación
La función Conversation Widget en Android 12 promueve la conexión al permitir a los usuarios abrir chats fácilmente en la pantalla de inicio. Los widgets son atajos mejorados que permiten a los usuarios volver a sus conversaciones de manera eficiente mientras muestran fragmentos de los estados de las conversaciones.
El socio debe implementar lo siguiente:
- Un widget proporcionado por SystemUI.
- Un flujo para agregar estos widgets desde la pantalla de selección de widgets.
- Soporte para cambiar el tamaño de los widgets de la siguiente manera:
- Utilice
onAppWidgetOptionsChanged()
para cambiar el diseño a un diseño de mejor tamaño cuando el usuario cambia el tamaño del diseño o lo gira a horizontal. - Utilice
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
,minResizeHeight
para vincular correctamente los cambios de tamaño de su widget.
- Utilice
Tenga en cuenta las siguientes dependencias al implementar widgets de conversación:
- El socio no tiene que modificar ni implementar el código HAL/controlador/kernel.
- Para la implementación se utiliza la API de estado, que permite a las aplicaciones agregar información de estado o disponibilidad a una conversación y al widget asociado.
- El proceso es el mismo tanto en las implementaciones de dispositivos nuevos como en la implementación de actualizaciones.
- La función Widgets de conversación depende de una nueva función que se lanza en Android 12, que almacena en caché las conversaciones vistas recientemente (de notificaciones, por ejemplo). Esta última característica permite ampliar la lista de conversaciones que un usuario podría agregar a su pantalla de inicio.
Consulte la siguiente implementación de referencia en archivos SystemUI y 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/
Personalización
La función de widgets de conversación no se puede activar ni desactivar. Sin embargo, un socio puede cambiar los diseños de las plantillas de widgets, siempre que se cumplan los requisitos de GMS.
Validación
Para asegurarse de que su versión de la función funcione según lo previsto, verifique lo siguiente:
Al mantener presionado el Iniciador, se puede agregar un nuevo widget de conversación para una conversación a través del selector de widgets. Consulte la figura 4 para ver la interfaz de usuario del selector de widgets:
Figura 4: Interfaz de usuario del selector de widgets para agregar un nuevo widget de conversación
Al enviar notificaciones al dispositivo desde la conversación seleccionada, el widget se actualiza para reflejar esas notificaciones.
Al aplicar estados a esa conversación utilizando la API
ConversationStatus
, el widget refleja esos estados.Los usuarios pueden cambiar el tamaño de los widgets y los widgets pueden cambiar sus tamaños según su Iniciador actual. Los diseños de sus widgets deben funcionar bien con diferentes tamaños de Iniciador en diferentes dispositivos y al cambiar el tamaño del widget.
Para validar la implementación, utilice las siguientes pruebas en el paquete de notificación:
Pruebas CTS (PeopleManagerTest) para las superficies API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Pruebas manuales para requerimiento GMS - Conversaciones.