Lineamientos de UX para la entrega de funciones on demand

Las funciones que resultan útiles como módulos a pedido son aquellas que no son necesarias para la mayoría de los usuarios en el momento de la instalación. Los siguientes son algunos ejemplos de las funciones de apps que serían apropiadas para los módulos a pedido:

  • Editar y subir un video en una app en la cual la mayoría de los usuarios solo ven videos
  • Agregar una receta en una app en la cual la mayoría de los usuarios solo navega y sigue las recetas de otros usuarios
  • Función de ayuda y asistencia cuando la mayoría de los usuarios no buscan ayuda o no la buscan dentro de la app
  • Grandes bibliotecas para una función menos utilizada, como proporcionar informes y capturas de errores detallados
  • Pago específico o funciones para confirmar compras
  • Experiencias multimedia de resolución muy alta o funciones de RV/RA

En el caso típico en el que estos módulos son relativamente pequeños (menos de 10 MB) y no hay fallas en la red u otro tipo de fallas, los usuarios pueden descargar y usar un módulo a pedido con gran rapidez. Es decir, la experiencia suele ser la misma que si el módulo estuviera presente en la instalación de la aplicación.

En esta página se describen las prácticas recomendadas que te ayudarán a hacer lo siguiente:

  • Asegurarte de que los usuarios estén al tanto y sientan que pueden controlar descargas de módulos relativamente más grandes, que no se cargan al instante, o errores de instalación del módulo
  • Optimizar aún más la experiencia de entrega del módulo, en especial, en situaciones en las que puedes anticipar que un usuario necesitará un módulo en particular

Una vez que hayas leído esta guía, prueba la app de ejemplo de la API de Play Core para ver las prácticas recomendadas en acción.

Cómo mantener informado al usuario

Debes informar al usuario de inmediato cuando una función no esté disponible. Si un usuario decide descargar la función desde Google Play, muestra el progreso de la descarga.

Puedes supervisar el estado de la solicitud para mostrar el progreso de la descarga y el estado de la instalación. Sin embargo, el tipo de IU que deseas mostrar puede depender del tamaño de la descarga:

  • Para los módulos más pequeños (de ~10 MB o menos) que se pueden instalar muy rápido, considera indicadores como íconos giratorios o un mensaje breve de "descargando contenido".
  • Para módulos más grandes que pueden tardar unos segundos o más en descargarse e instalarse, considera mostrar una barra de progreso de descarga e instalación, como la que se muestra en la figura 1.

Figura 1: Se muestran un mensaje y la barra de progreso cuando se descarga e instala una función a pedido

Cómo informar de manera correcta sobre las demoras y fallas de instalación

Si una descarga falla o progresa más lentamente de lo esperado, informa de manera clara y transparente al usuario lo que sucede e indícale qué puede hacer, como se muestra en las figuras 2 y 3. Por ejemplo, si supervisas el estado de la solicitud de descarga y tu app recibe un error API_NOT_AVAILABLE, notifica al usuario que su dispositivo no admite descargas on demand.

Figura 2: Mensaje que informa al usuario por qué no se puede instalar una función en este momento

Figura 3: Mensaje que explica al usuario por qué la descarga de una función puede tardar más de lo esperado.

Cómo mostrar valor antes de solicitar permiso para descargas grandes

Si un módulo a pedido es grande (más de 50 MB), Google Play requiere que el usuario dé su consentimiento antes de descargarlo.

Antes de solicitar el módulo, indica a los usuarios cuál es su valor. Ayúdalos a comprender por qué solicitas el permiso, como lo harías al solicitar permisos de apps. Tener una comunicación abierta con los usuarios aumenta la probabilidad de que acepten la descarga.

Por ejemplo, imagina que estás creando una app de comercio electrónico y una de las funciones permite que los usuarios coloquen muebles directamente en su departamento con la realidad aumentada (RA). Puedes incluir un mensaje como "¿Te gustaría ver cómo luce tu nuevo sofá en la sala de estar? Instala el visor de realidad aumentada ahora".

Cómo realizar la descarga y la instalación en segundo plano

La descarga e instalación del módulo siempre deben realizarse en segundo plano. Es decir, mientras un usuario espera que una función esté disponible, debe poder seguir usando otras partes de la app. Una vez que lo esté, debes enviar una notificación que permita al usuario usar esa función a su discreción.

Como se muestra en la figura 5, el usuario continúa usando la aplicación y recibe una notificación cuando finaliza la instalación de una función a pedido.

Figura 5: En lugar de cambiar el contexto del usuario repentinamente cuando se completa la instalación de un módulo, notifica al usuario que la función solicitada está lista.

Cuando el módulo esté listo, notifica al usuario y bríndale la opción de iniciar la función. Este patrón proporciona al usuario contexto y control sobre su experiencia.

En algunos casos, podrías lanzar la función en cuanto esté lista. Sin embargo, como esto podría interrumpir la experiencia del usuario, considera con cuidado si este comportamiento es el esperado y el adecuado.

Cómo liberar almacenamiento del dispositivo cuando ya no se necesita un módulo

Una característica útil de todos los módulos de funciones es la capacidad de desinstalarlos de manera individual. Si ya no se usa un módulo de funciones, puedes reducir el tamaño de tu app en el dispositivo de un usuario solicitando a Google Play que desinstale ese módulo.

Por ejemplo, tu app puede tener un flujo de integración sólido, que tal vez contenga rich media. Después de que un usuario complete el flujo de capacitación, o después de haber sido usuario activo durante un cierto período, puedes usar la API de Play Feature Delivery para solicitar que Google Play desinstale solo ese componente de tu app.

Sugerencias avanzadas

Por lo general, debes manejar situaciones en las que el usuario señala explícitamente la intención de utilizar la funcionalidad de tus módulos de funciones a pedido.

No obstante, es posible que quieras predecir cuándo es probable que un usuario interactúe con una función antes de indicarte que desea usarla. Con una app que permite descargar y crear recetas de cocina como ejemplo, los siguientes lineamientos describen cómo optimizar la experiencia de entrega de módulos anticipando las necesidades de los usuarios:

  • Anticípate a la necesidad de un usuario de utilizar una función en la sesión actual. Considera si los usuarios solo necesitan crear una cuenta para la app de recetas cuando quieren crear y compartir sus propias recetas con la comunidad. Puedes usar la creación de la cuenta como un indicador de que es probable que el usuario quiera agregar su propia receta y comenzar a descargar el módulo de funciones antes de que el usuario presione "Agregar receta". Puedes aplicar este enfoque a otros recorridos del usuario en la app para que el proceso de descarga de funciones sea más fluido.

  • Anticípate a la necesidad de un usuario de utilizar la función en una próxima sesión. Si no necesitas que tu app descargue e instale inmediatamente un módulo a pedido, puedes postergar la instalación para cuando la app esté en segundo plano, y Google Play se encargará de la descarga y la instalación por ti. Por ejemplo, imagina que quieres lanzar nuevas recetas de temporada para la app de cocina, que no son de alta prioridad para la sesión actual del usuario. Puedes solicitar que Play descargue e instale estas recetas cuando la app esté en segundo plano. Esto es especialmente útil para funciones más grandes (>10 MB) que no se necesitan de inmediato, pero que probablemente se necesiten en el futuro.

  • Anticípate a la necesidad de un usuario de una función antes de que instale la app. Es posible que quieras agregar compatibilidad con la publicación condicional para incluir tu función en el momento de la instalación según el país del usuario, la capacidad de hardware del dispositivo y el nivel de API. Por ejemplo, tal vez quieras incluir recetas que usen carne de cerdo en módulos condicionales y omitir ese módulo de la instalación de la app en regiones en las que se eviten predominantemente los platos con carne de cerdo.