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 módulos más pequeños (~10 MB o menos) que se pueden instalar muy rápidamente, considera usar indicadores, como íconos giratorios, o un breve mensaje de descarga de 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
, informa al usuario que su dispositivo no es compatible con descargas a pedido.
![](https://developer.android.com/static/studio/images/projects/dynamic-delivery/failed_download.png?authuser=7&hl=es)
Figura 2: Mensaje que informa al usuario por qué no se puede instalar una función en este momento
![](https://developer.android.com/static/studio/images/projects/dynamic-delivery/large_download.png?authuser=7&hl=es)
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 compilando una app de comercio electrónico y una de las funciones permite a los usuarios colocar muebles directamente dentro de sus apartamentos con el uso de 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, se podría iniciar la función tan pronto como esté lista. No obstante, debido a que podría interrumpir la experiencia del usuario, considera cuidadosamente si este comportamiento es esperado y apropiado.
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 utiliza 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 integració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.
Ten en cuenta que también puedes desinstalar más adelante los módulos que incluyas en la instalación inicial de la app. Por ejemplo, un módulo que ofrece una capacitación a usuarios nuevos sobre cómo usar tu app es valioso cuando los usuarios la usan por primera vez. Sin embargo, para reducir el tamaño de la app, puedes desinstalarla después de que el usuario haya completado la capacitación.
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. Se toma una app que permite descargar y crear recetas de cocina como ejemplo a fin de mostrar las siguientes pautas, que anticipan las necesidades del usuario para describir cómo optimizar la experiencia de entrega del módulo.
Anticípate a la necesidad de un usuario de utilizar una función en la sesión actual. Piensa 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 interpretar la creación de la cuenta como una posible señal de que el usuario quiere agregar su propia receta. Comienza a descargar el módulo de funciones antes de que el usuario presione "agregar receta". Puedes aplicar este enfoque a otras experiencias de usuarios 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 diferir la instalación para cuando la app esté en segundo plano y Google Play se encargará de la descarga e instalación. Por ejemplo, imagina que deseas publicar nuevas recetas de temporada para la app de cocina, que no tienen una prioridad alta 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 (más de 10 MB) que no son necesarias de inmediato, pero que es posible que lo sean en el futuro.
Anticípate a la necesidad de un usuario de una función antes de que instale la app. Es posible que desees agregar compatibilidad con la entrega condicional a fin de incluir tu función en el momento de la instalación, según el país del usuario, la capacidad del hardware del dispositivo y el nivel de API. Por ejemplo, es posible que desees incluir recetas en las que se usa carne de cerdo en módulos condicionales y omitir ese módulo de la instalación de la app en regiones en las que predominantemente no se come cerdo.