Android 11 agrega compatibilidad para personalizar el comportamiento y la posición de las notificaciones de conversación en el panel de notificaciones por prioridad y nivel de alerta, lo que permite que las conversaciones se marquen como importantes y que las burbujas específicas de conversaciones se inicien en el espacio de conversación.
A partir 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 las notificaciones de las conversaciones recientes sin esperar una notificación.
La función Widget de conversación permite a los usuarios abrir chats fácilmente en la pantalla principal, lo que brinda una vista rápida de las conversaciones recientes.
En este documento, se describen los aspectos de implementación, personalización y validación de las notificaciones y los widgets de conversación.
Descripción general de las notificaciones de conversaciones
Android 11 presenta una nueva primitiva del sistema, la conversación, que está representada por el objeto de acceso directo de uso compartido existente (que se lanzó con Android 9).
La primitiva de conversaciones se puede usar de la siguiente manera:
Para compartir datos de conversaciones entre las apps del sistema a través de la hoja compartida (ya está disponible en Android 10).
Para usar burbujas(atajos en Android 11). Consulta la Figura 1.
Para participar en el nuevo espacio de conversación sobre el panel de notificaciones (implementado en Android 11). Consulta la Figura 2.
Para crear widgets de conversación (implementados en Android 12).
Figura 1: La notificación se inicia en forma de burbuja desde el panel lateral de notificaciones
Figura 2: Espacio de conversación ubicado en la parte superior de la pantalla de notificaciones
Además de vincularse al atajo 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 una sección independiente en la parte superior de la pantalla de notificaciones.
- 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 se puede alinear con los conceptos de OEM de naturaleza similar. En general, los socios tienen la libertad de alinear la sección de conversación con la IU del sistema específica. El socio no tiene que modificar ni implementar el código, las extensiones ni el HAL, el controlador o el kernel.
Consulta la siguiente implementación de referencia en las secciones SystemUI y PeopleService del 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 asegurarte de que la versión de la función funcione según lo previsto, verifica lo siguiente:
Las apps que son totalmente compatibles con la API de conversación ven sus notificaciones en la sección nueva y pueden personalizarlas por conversación en lugar de hacerlo mediante el NotificationChannel genérico.
Las burbujas específicas de la conversación funcionan.
Para validar la implementación, usa las siguientes pruebas en el paquete de notificaciones:
Pruebas de CTS.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Pruebas del verificador del 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) y permite que las apps proporcionen el estado de esas conversaciones que se muestran en los widgets de conversación.
Figura 3: Conversaciones que se muestran en los widgets de conversación
La función Widget de conversación en Android 12 promueve la conexión, ya que permite a los usuarios abrir chats fácilmente en la pantalla principal. Los widgets son accesos directos mejorados que permiten a los usuarios volver a sus conversaciones de forma eficiente y, al mismo tiempo, mostrar 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.
- Se agregó compatibilidad para cambiar el tamaño de los widgets de la siguiente manera:
- Usa
onAppWidgetOptionsChanged()
para cambiar el diseño a uno de mejor tamaño cuando el usuario cambie el tamaño del diseño o rote a la orientación horizontal. - Usa
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
yminResizeHeight
para vincular correctamente los cambios de tamaño del widget.
- Usa
Ten en cuenta las siguientes dependencias cuando implementes widgets de conversación:
- El socio no tiene que modificar ni implementar el código de HAL, controlador o kernel.
- La API de Status, que permite que las apps agreguen información de estado o disponibilidad a una conversación y el widget asociado, se usa para la implementación.
- El proceso es el mismo en las implementaciones de dispositivos nuevos y en la de actualizaciones.
- La función Widget de conversación depende de una nueva función que se lanza en Android 12, que almacena en caché las conversaciones vistas recientemente (por ejemplo, desde las notificaciones). Esta última función permite expandir la lista de conversaciones que un usuario podría agregar a su pantalla principal.
Consulta 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 los GMS.
Validación
Para asegurarte de que tu versión de la función funcione según lo previsto, verifica lo siguiente:
Cuando mantienes presionado el Selector, se puede agregar un nuevo widget de conversación para una conversación a través del selector del widget. Consulta la figura 4 para ver la IU del selector de widgets:
Figura 4: IU del selector de widgets para agregar un widget de conversación nuevo
Cuando se envían notificaciones al dispositivo desde la conversación seleccionada, el widget se actualiza para reflejar esas notificaciones.
Cuando se aplican estados a esa conversación con la API de
ConversationStatus
, el widget refleja esos estados.Los usuarios pueden cambiar el tamaño de los widgets, y estos pueden cambiar de tamaño según el selector de inicio actual. Los diseños de tus widgets deben funcionar bien con diferentes tamaños de selector en diferentes dispositivos y cuando se cambia el tamaño del widget.
Para validar la implementación, usa las siguientes pruebas en el paquete de notificaciones:
Pruebas de CTS (PeopleManagerTest) para las plataformas de la API
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Pruebas manuales para el requisito de GMS: Conversaciones