La iniciativa de personas y conversaciones es un proyecto de Android de larga duración con el que se busca priorizar a las personas y las conversaciones en las plataformas del sistema del teléfono. Esa prioridad se basa en el hecho de que la comunicación y la interacción con otras personas siguen siendo el área funcional más importante para la mayoría de nuestros usuarios de todos los segmentos demográficos.
En Android 11, se introdujeron varias funciones para respaldar la iniciativa de personas y conversaciones.
Espacio de conversaciones
En los dispositivos de mano, existe una sección separada en la parte superior del panel de notificaciones que contiene solo conversaciones en tiempo real con personas (como llamadas y mensajes de chat, incluidos los chats en grupo). En este espacio, las notificaciones se ven y funcionan de manera diferente a las notificaciones no conversacionales en muchos teléfonos:
- El diseño es diferente y tiene un fuerte énfasis en el avatar que representa a las personas combinado con la app en la que se lleva a cabo la conversación.
- Si presionas la notificación, se abre la conversación en la app (o en una burbuja, si la conversación estaba en una burbuja previamente). En cambio, si presionas el signo de intercalación, se expanden los mensajes nuevos en el panel y se muestran en su totalidad con la lista completa de opciones.
- Se ofrecen acciones específicas de la conversación (algunas si mantienes presionada la notificación):
- Marcar esta conversación como prioritaria
- Mostrar esta conversación en una burbuja (solo se muestra si la app admite burbujas)
- Silenciar las notificaciones de esta conversación
- Establecer vibraciones o sonidos personalizados para esta conversación
Conversaciones en burbujas
A partir de Android 11, se pueden iniciar burbujas desde las notificaciones de la sección Conversaciones. Solo se pueden iniciar como burbujas las notificaciones que tienen un acceso directo asociado. Las conversaciones que se marquen como importantes o que se activen como burbujas en el panel de notificaciones aparecerán como burbujas automáticamente.
Accesos directos a las conversaciones
Los accesos directos de las conversaciones aparecen en el selector y junto a accesos directos de uso compartido de larga duración en la hoja compartida.
Lineamientos de las API
En esta sección, se describen las API que sirven para agregar compatibilidad en tu app en relación con el espacio proporcionado por el sistema que muestra personas y conversaciones.
Accesos directos para conversaciones
A fin de participar en esta iniciativa centrada en las conversaciones, las apps deben proporcionar al sistema accesos directos de larga duración. Te recomendamos que uses accesos directos de uso compartido de larga duración. Si es necesario, puedes usar accesos directos dinámicos en Android 11, pero es posible que quitemos esta opción en el futuro.
Para publicar un acceso directo en la conversación, llama a los métodos de ShortcutManagerCompat
setDynamicShortcuts()
, addDynamicShortcuts()
o pushDynamicShortcut()
(que administran automáticamente el límite de accesos directos para el desarrollador). Este acceso directo debe ser de larga duración y tener datos Person
adjuntos para una o más personas, lo que permite identificar a los demás participantes de la conversación. También te recomendamos que configures el LocusIdCompat
.
Si ya no existe una conversación, la app puede borrar el acceso directo con removeLongLivedShortcuts()
. De esa forma, el sistema borrará todos los datos asociados con la conversación.
Aunque se pueden quitar los accesos directos, las apps no deberían quitar los que estén almacenados en caché, a menos que sea absolutamente necesario. Es posible que un acceso directo se almacene en caché porque el usuario interactuó con él a fin de cambiar su experiencia. Por lo tanto, si lo quitas, desaparecerán esos cambios, lo que afectará negativamente al usuario.
Notificaciones de conversaciones
Una notificación se considera como una notificación de conversación si se cumplen las siguientes condiciones:
La notificación usa
MessagingStyle
.(Solo si la app está orientada a Android 11 o versiones posteriores) La notificación está asociada con un acceso directo de uso compartido dinámico o almacenado en caché que sea de larga duración y válido. La notificación puede establecer esa asociación con una llamada a los métodos
setShortcutId()
osetShortcutInfo()
. Si la app está orientada a Android 10 o versiones anteriores, no es necesario que la notificación esté asociada con un acceso directo, como se explica en la sección de opciones de resguardo.El usuario no descendió el nivel de la conversación desde la sección de conversaciones, a través de la configuración del canal de notificaciones, en el momento de la publicación.
Cómo usar LocusIdCompat
La inteligencia del dispositivo determina las conversaciones que probablemente le interesen más al usuario. Los indicadores más importantes son la novedad y la frecuencia de las sesiones de conversación en cada conversación. El sistema obtiene información de las interacciones con una conversación desde los accesos directos de Launcher o dentro de una notificación, si tienen las etiquetas correctas. Sin embargo, el sistema no obtiene datos de conversaciones que se realizan por completo en la app, a menos que esas interacciones también estén etiquetadas. Por eso, te recomendamos que adjuntes un LocusIdCompat
al acceso directo y que anotes la actividad o el fragmento de la app con el LocusIdCompat
asociado. Usa LocusIdCompat
para permitir que el sistema de sugerencias clasifique correctamente la conversación y muestre la hora indicada de la última interacción del usuario (incluidas las interacciones en la app) con una conversación. Si usas setShortcutInfo()
para asociar la conversación con un acceso directo, el sistema de conversaciones adjuntará automáticamente el LocusIdCompat
correspondiente.
Requisitos del espacio de conversaciones para apps orientadas a Android 10 o versiones anteriores
Si una app no está orientada a Android 11, sus mensajes aún pueden aparecer en el espacio de conversaciones. Sin embargo, la app debe cumplir ciertos requisitos. En esta sección, se describen los requisitos para esas apps y el comportamiento de resguardo si la app no los cumple.
El requisito principal para que la app aparezca en el espacio de mensajería es que implemente notificaciones MessagingStyle
, que deben hacer referencia a un acceso directo de larga duración de la notificación que se publica, en el momento de la publicación. Las notificaciones que cumplen con estos requisitos aparecen en el espacio de conversaciones con este comportamiento:
- La notificación se muestra en estilo de conversación.
- Se ofrece el botón Burbuja, si está implementado.
- Se ofrecen funciones específicas de la conversación intercaladas.
Si la notificación no cumple con estos requisitos, la plataforma usa opciones de resguardo para darle formato. Si una notificación cumple con los requisitos de cualquiera de los casos de resguardo, se mostrará en el espacio de conversaciones con un formato especial. Si la notificación no califica para ninguna de las opciones de resguardo, no se mostrará en el espacio de conversaciones.
Resguardo: Si se usa MessagingStyle, pero no se proporcionó ningún acceso directo
Si la app está orientada a Android 10 o versiones anteriores, y una notificación usa MessagingStyle
, pero no asocia el mensaje con un acceso directo, se mostrará la notificación en el espacio de conversación con este comportamiento:
- La notificación se muestra en estilo de conversación.
- No se ofrece el botón de burbuja.
- No se ofrecen funciones específicas de la conversación intercaladas.
Resguardo: Si no se usa MessagingStyle, pero la app es una app de mensajería reconocida
Si una notificación no usa MessagingStyle
, pero la plataforma reconoce la app como una aplicación de mensajería y el parámetro category
de la notificación se establece en msg
, se mostrará la notificación en el espacio de conversaciones con este comportamiento:
- La notificación se muestra en un estilo anterior a Android 11
- No se ofrece el botón de burbuja.
- No se ofrecen funciones específicas de la conversación intercaladas.
Orientación, uso y pruebas
En esta sección, se proporciona orientación general para usar y probar las funciones de conversación.
¿Cuándo debería usar las conversaciones?
Las notificaciones de conversaciones y los accesos directos relacionados están destinados a mejorar la experiencia del usuario de las conversaciones en tiempo real. Por ejemplo, los SMS, chats de texto y llamadas telefónicas son conversaciones en tiempo real en las que los usuarios esperan comunicarse rápidamente. Los usuarios no esperan lo mismo de los correos electrónicos y las actividades no relacionadas con conversaciones.
Les proporcionamos a los usuarios la posibilidad de quitar una determinada conversación de la sección de conversaciones si consideran que no se encuentra en el espacio adecuado.
Prácticas recomendadas
Para aumentar la participación y facilitar que los usuarios interactúen con personas y conversaciones en torno a tu app, te recomendamos que sigas estas prácticas recomendadas.
- Para garantizar que las llamadas perdidas aparezcan en el panel de conversaciones prioritarias y se muestren correctamente en el widget de conversaciones, formatea las notificaciones de llamadas perdidas como
conversations
con una categoría establecida enCATEGORY_MISSED_CALL
. - Proporciona avatares de alta calidad (104 dp) para los usuarios; de lo contrario, el sistema usará las iniciales de la persona, lo que implica una experiencia menos atractiva.
- No uses
cancel
en una notificación de conversación antes de que el usuario vea el mensaje. Un ejemplo de esto es cancelar una notificación cuando se abre la app en una vista en la que el usuario no puede ver ni abordar el mensaje. Si el usuario no tiene la oportunidad de leer o abordar el mensaje, se quitan una notificación cancelada y su burbuja asociada, lo que provoca que se pierda el contexto de la conversación. - Proporciona un URI
data
para metadatos relacionados con MIME asociados con los mensajes, lo que te da la opción de proporcionar una mejor experiencia en las notificaciones. - Usa la API de
Android 12 status
para que los widgets de conversación sean más atractivos. - Adopta las siguientes prácticas recomendadas para combinaciones de teclas en conversaciones.
- Publica accesos directos para conversaciones entrantes y salientes en la app que no muestran notificaciones push. Los mensajes entrantes y salientes de la misma conversación deben tener el mismo ID de acceso directo. Usa
pushDynamicShortcut()
para publicar tus atajos y registrar el uso. - Para evitar el recorte no intencional de tu avatar de acceso directo, proporciona un
AdaptiveIconDrawable
para el ícono del acceso directo. Para obtener más información, consulta Cómo proporcionar imágenes de accesos directos. - A fin de ayudar al sistema a promocionar tu acceso directo, sigue los lineamientos para obtener la mejor clasificación. Tu acceso directo se clasifica en diferentes plataformas del sistema, lo que incluye Android Sharesheet si es un acceso directo de uso compartido.
- Asegúrate de que los accesos directos de las conversaciones
intents
se inicien directamente en la conversación correspondiente. - Usa las bibliotecas de compatibilidad para configurar de forma conveniente tus accesos directos como relacionados con
conversation
.
- Publica accesos directos para conversaciones entrantes y salientes en la app que no muestran notificaciones push. Los mensajes entrantes y salientes de la misma conversación deben tener el mismo ID de acceso directo. Usa
Cómo probar las notificaciones y los accesos directos de las conversaciones
Si sigues los lineamientos correspondientes, las conversaciones deberían aparecer automáticamente en el espacio de conversaciones. Para verificar que el acceso directo esté integrado correctamente, mantén presionada la notificación. Si la integración se realizó de forma correcta, la IU mostrará las acciones relacionadas con las conversaciones. Si la notificación no está vinculada a un acceso directo, la IU mostrará un texto para indicar que la app no admite funciones de conversación.
Se muestran los accesos directos agregados cuando mantienes presionado el selector de aplicaciones. Asegúrate de comprobar que los accesos directos te lleven al lugar correcto de tu app.
Se muestran los accesos directos de uso compartido agregados en la fila de uso compartido directo de la hoja cuando se comparte contenido que tu acceso directo de uso compartido puede recibir.
Widgets de conversación
En Android 12, la función Widget de conversación se basa en la función de personas y conversaciones que se introdujeron en Android 11 al permitir que las apps muestren el estado de las conversaciones en los widgets de conversación.
Los widgets de conversación promueven la interacción de los usuarios, ya que les permiten abrir fácilmente chats en la pantalla principal. Esos widgets son accesos directos mejorados que permiten a los usuarios volver a sus conversaciones de forma eficiente y, al mismo tiempo, mostrar fragmentos del estado de sus conversaciones o de otra información relevante.
Cómo validar que tu app admite widgets de conversación
Para validar que tu app admite widgets de conversación, debes tener al menos dos dispositivos Android (ambos deben ejecutar Android 12) y dos cuentas de usuario (una en cada dispositivo) a fin de intercambiar mensajes. Para los fines de este procedimiento, llamaremos a las cuentas "usuario A" y "usuario B".
Completa los siguientes pasos:
- En el dispositivo del usuario A, mantén presionado el selector. En el selector de widgets, presiona un widget nuevo para una conversación, como se muestra en la Figura 2.
- Arrastra el widget a la pantalla principal. Se debe poder seleccionar una lista de conversaciones activas o recientes de la app del usuario A.
- Ahora, en el dispositivo del usuario B, envía un mensaje de prueba al usuario A.
- En el dispositivo del usuario A, verifica que el widget esté actualizado para reflejar la notificación del mensaje del usuario B.
- Opcional: Haz que el usuario A y el usuario B establezcan la conversación en diferentes valores de estado para garantizar que tus widgets los reflejen de forma correcta. Para obtener una lista de los valores de estado, consulta ConversationStatus.