Cuando el usuario agrega tu app web progresiva a su pantalla principal en Android, Chrome genera automáticamente un APK por ti, que a veces llamamos WebAPK. La instalación a través de un APK permite que tu app aparezca en el selector de apps y en la configuración de apps de Android, y que registre un conjunto de filtros de intents.
Instalar una PWA en Android hace mucho más que agregar la app web progresiva a la pantalla principal del usuario. Chrome genera e instala automáticamente un APK especial de tu app. A veces, nos referimos a esto como WebAPK. La instalación a través de un APK permite que tu app aparezca en el selector de apps y en la configuración de apps de Android, y que registre un conjunto de filtros de intents.
Para generar el WebAPK, Chrome analiza el manifiesto de la app web y otros metadatos. Cuando se detecta una actualización del manifiesto, Chrome deberá generar un APK nuevo.
Filtros de intents de Android
Cuando se instala una app web progresiva en Android, se registra un conjunto de filtros de intents para todas las URLs dentro del alcance de la app. Cuando un usuario hace clic en un vínculo que está dentro del alcance de la app, se abrirá la app en lugar de abrirse en una pestaña del navegador.
Considera el siguiente manifest.json parcial:
"start_url": "/",
"display": "standalone",
Cuando se inicia una app web que lo usa desde el selector de apps, se abriría https://example.com/ como una app independiente, sin ningún Chrome del navegador.
El WebAPK incluiría los siguientes filtros de intents:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/" />
</intent-filter>
Si el usuario hace clic en un vínculo dentro de una app instalada a https://example.com/read, el intent lo detectará y se abrirá en la app web progresiva.
Usa scope para restringir los filtros de intents
Si no quieres que tu app web progresiva controle todas las URLs de tu sitio,
puedes agregar la propiedad scope a
tu manifiesto de la app web. La propiedad scope le indica a Android que solo abra tu app web
si la URL coincide con origin + scope. Te permite controlar qué URLs controlará tu app y cuáles se deben abrir en el navegador.
Esto es útil cuando tienes tu app y otro contenido que no es de la app en el mismo dominio.
Considera el siguiente manifest.json parcial:
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
Cuando se inicia desde el selector de apps, se abriría https://example.com/app/ como una app independiente, sin ningún Chrome del navegador.
Al igual que antes, el WebAPK generado incluiría un filtro de intents, pero con un atributo android:pathPrefix diferente en el AndroidManifest.xml del APK:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/app/" />
</intent-filter>
Veamos algunos ejemplos:
https://example.com/app/ - dentro de /app/
https://example.com/app/read/book - dentro de /app/
https://example.com/help/ - no en /app/
https://example.com/about/ - no en /app/
Consulta scope para obtener más información sobre
scope, qué sucede cuando no lo configuras y cómo puedes usarlo para definir
el alcance de tu app.
Administra permisos
Los permisos funcionan de la misma manera que otras apps web y no se pueden solicitar durante la instalación. En cambio, se deben solicitar en el tiempo de ejecución, idealmente solo cuando realmente los necesites. Por ejemplo, no solicites permiso de acceso a la cámara en la primera carga, sino que espera hasta que el usuario intente tomar una foto.
Administra el almacenamiento y el estado de la app
Aunque la app web progresiva se instala a través de un APK, Chrome usa el perfil actual para almacenar cualquier dato y no se separará. Esto permite una experiencia compartida entre el navegador y la app instalada. Las cookies se comparten y están activas, se puede acceder a cualquier almacenamiento del cliente, y el service worker está instalado y listo para usar.
Actualiza el WebAPK
La información sobre cómo se actualiza un WebAPK se movió a Cómo Chrome controla las actualizaciones del manifiesto de la app web.
Preguntas frecuentes
¿Qué íconos se usan para generar la pantalla de presentación?
Te recomendamos que proporciones al menos dos tamaños de íconos para la pantalla de presentación: 192 px y 512 px. Nos informaste que los íconos de la pantalla de presentación eran demasiado pequeños. Los WebAPKs generados en Chrome 71 o versiones posteriores mostrarán un ícono más grande en la pantalla de presentación. No se requiere ninguna acción, siempre que se proporcionen los íconos recomendados.
¿Qué sucede si el usuario ya instaló la aplicación nativa para el sitio?
Al igual que hoy en día, los usuarios podrán agregar un sitio independientemente de las apps nativas. Si esperas que los usuarios instalen ambos, te recomendamos que diferencies el ícono o el nombre de tu sitio de tu app nativa.
¿Se borrará el almacenamiento de mi sitio instalado si el usuario borra la caché de Chrome?
Sí.
¿Se volverá a instalar mi app cuando obtenga un dispositivo nuevo?
Por el momento, no, pero creemos que es un área importante y estamos investigando formas de hacer que funcione.
¿Cómo se controlan los permisos? ¿Veré la solicitud de Chrome o la de Android?
Los permisos se seguirán administrando a través de Chrome. Los usuarios verán las solicitudes de Chrome para otorgar permisos y podrán editarlos en la configuración de Chrome.
¿En qué versiones de Android funcionará esto?
Las apps web progresivas se pueden instalar en todas las versiones de Android que ejecutan Chrome para Android, específicamente Jelly Bean y versiones posteriores.
¿Usa WebView?
No, el sitio se abre en la versión de Chrome desde la que el usuario agregó el sitio.
¿Podemos subir los APK que se crean a Play Store?
No. Si quieres subir tu propio APK, consulta Actividades web de confianza.
¿Aparecen en Play Store?
No. Si quieres subir tu propio APK para que aparezca en Play Store, consulta Actividades web de confianza.
Soy desarrollador de otro navegador en Android. ¿Puedo tener este proceso de instalación sin problemas?
Estamos trabajando en eso. Nos comprometemos a que esté disponible para todos los navegadores en Android y pronto tendremos más detalles.