Tienes un sitio web y quieres que esté en los teléfonos de la gente como una app. Si buscas cómo hacerlo, te encontrarás una y otra vez con tres términos: PWA, TWA y WebView. Suenan parecidos, todos muestran páginas web y a menudo se explican mal.
En realidad son bastante diferentes, y elegir la correcta te ahorra mucho trabajo repetido. Aquí tienes qué es cada una, qué puede y qué no puede hacer, y cuándo tiene sentido.
Opción 1: una Progressive Web App (PWA)
Una PWA es un sitio web que se comporta más como una app. Tiene un manifiesto de app web (un pequeño archivo JSON con el nombre, el icono y los colores) y normalmente un service worker, un script que puede guardar archivos en caché para que el sitio cargue incluso sin conexión. Cuando alguien visita una PWA en un navegador compatible, puede instalarla en la pantalla de inicio. Después se abre en su propia ventana, sin la barra de direcciones.
Lo bueno: no hay ninguna app aparte que compilar. Actualizas tu sitio web y todos los usuarios tienen la nueva versión al instante. Con un service worker puedes hacer que funcione sin conexión.
Qué está limitado: la gente primero tiene que encontrar tu sitio y luego tocar instalar, cosa que muchos nunca hacen. Una PWA simple no es un archivo que puedas subir a Google Play, ni un APK que puedas darle a alguien. El acceso a las funciones del teléfono depende de lo que el navegador ofrezca mediante las API web.
Encaja bien con: sitios que la gente ya visita a menudo, donde instalar es un extra y no el objetivo principal.
Opción 2: una Trusted Web Activity (TWA)
Una Trusted Web Activity es una pequeña app Android que abre tu PWA a pantalla completa usando el navegador del usuario, como Chrome. Se basa en el protocolo Custom Tabs, así que la página la dibuja el propio navegador y no la app.
Hay dos requisitos. Primero, hay que demostrar que tu sitio y tu app pertenecen al mismo propietario. Eso se hace con Digital Asset Links: pones un archivo en /.well-known/assetlinks.json de tu dominio que indica el nombre del paquete de tu app y la huella de su certificado de firma. Segundo, la documentación de Google dice que tu sitio debe cumplir los criterios para añadirse a la pantalla de inicio, lo que en la práctica significa una PWA en condiciones con manifiesto. La herramienta de Google para crear TWA es Bubblewrap, una herramienta de línea de comandos para Node.js.
Si la verificación falla, o el navegador no admite TWA, Google dice que recurre a una Custom Tab con una barra de navegador sencilla en lugar de pantalla completa. Esa es la sorpresa más común con la que se encuentra la gente.
Lo bueno: obtienes una app Android real que puede ir en Google Play, y el contenido es tu PWA en vivo, así que las actualizaciones web aparecen al instante.
Qué está limitado: necesitas una PWA que funcione y control del dominio para alojar el archivo de asset links. La huella de ese archivo debe coincidir con la clave que firma la app que los usuarios instalan realmente, y con Play App Signing la copia de Google Play está firmada con la clave de firma de apps de Google, así que Google sugiere incluir las huellas tanto de esa clave como de tu clave de subida. Las funciones del teléfono siguen siendo solo las que el navegador ofrece mediante las API web. Y la app depende de que haya un navegador compatible instalado.
Encaja bien con: equipos que ya tienen una PWA sólida en su propio dominio y la quieren en Play Store con el mínimo código extra.
Opción 3: una app WebView
Una app WebView es una app Android nativa que muestra contenido web dentro de su propia ventana usando el componente WebView de Android. El WebView es un motor de navegador sin el navegador alrededor: sin barra de direcciones, sin pestañas, solo tu página. La documentación de Google lo describe como la opción para mostrar tu propio contenido web cuando quieres flexibilidad en la interfaz.
La gran diferencia con una TWA es el control. La app decide qué pasa con el botón Atrás, cómo se ve la pantalla de bienvenida, si hay menús nativos, qué mostrar cuando no hay red y qué enlaces se abren dentro de la app. Android también permite que una app WebView conecte JavaScript con código nativo mediante addJavascriptInterface, para que tu página pueda usar funciones reales del teléfono que no están disponibles en la web. La documentación de Google añade una advertencia importante: expón ese puente solo a HTML y JavaScript que hayas escrito tú.
Lo bueno: funciona con cualquier sitio web o carpeta de archivos HTML, sin necesidad de PWA, manifiesto ni archivo de asset links. Las páginas pueden ir incluidas dentro de la app para que se abran al instante sin conexión. Las funciones nativas están disponibles mediante un puente.
Qué está limitado: la app tiene su propio almacenamiento, así que si un usuario inició sesión en tu sitio web en Chrome, eso no se traslada. Si empaquetas un sitio en vivo, eres responsable de mantener la app actualizada cuando haya que cambiar algo nativo.
Encaja bien con: apps HTML, juegos, herramientas, sitios de pequeños negocios, apps internas de empresa y cualquier cosa que se beneficie de extras nativos.
Lado a lado
Funciones del teléfono
- PWA: las API web que admita el navegador.
- TWA: lo mismo, ya que el navegador dibuja la página.
- App WebView: API web más todo lo que la app expone mediante un puente JavaScript.
Sin conexión
- PWA y TWA: funcionan sin conexión si tu service worker guarda en caché lo necesario.
- App WebView: las páginas incluidas funcionan sin conexión sin service worker; las apps de sitio web pueden mostrar su propia pantalla sin conexión.
Google Play
- PWA: no por sí sola. Necesitas empaquetarla, normalmente como TWA.
- TWA y app WebView: ambas son apps Android normales y pueden publicarse como AAB.
Hay una norma de Play que se aplica por igual a las TWA y a las apps WebView. La política de spam de Google Play no permite apps cuyo propósito principal sea mostrar un sitio web en un webview sin permiso del propietario del sitio. Empaqueta tu propio sitio, o uno para el que tengas permiso. Play tampoco permite apps con funcionalidad muy limitada, así que dale a la gente un motivo para instalar la app y no solo un marcador.
¿Cuál deberías elegir?
- Solo quieres un botón de instalar en tu sitio: PWA.
- Tienes una PWA madura en tu propio dominio y la quieres en Play con contenido web en vivo: TWA.
- Quieres funciones nativas, HTML sin conexión, menús y control total, o no tienes una PWA: app WebView.
Cómo lo hace Free HTML to APK
Free HTML to APK compila apps WebView. Puedes empezar con la URL de un sitio web, archivos HTML, un ZIP o una carpeta, y obtener un APK firmado más un AAB para Google Play. El compilador web de freehtmltoapk.com es gratis, no necesita cuenta y no añade marca de agua, y la app Android "HTML to APK: Website to App" hace lo mismo en tu teléfono.
Tus páginas pueden usar el puente JavaScript integrado FreeApp para funciones del teléfono como vibración, notificaciones, la cámara, escaneo de códigos QR y de barras, ubicación y compartir archivos. Una llamada es así de sencilla:
<button onclick="FreeApp.vibrate(30)">Tap</button>
Las apps HTML incluidas funcionan totalmente sin conexión, y las apps de sitio web muestran una página sin conexión amigable y se reconectan cuando vuelve la conexión. Como es una app WebView, no hay que configurar ningún archivo de Digital Asset Links. Si ya tienes una PWA, su service worker sigue funcionando cuando la app la carga por URL.
Lee más en PWA a APK o sitio web a app, y elige el camino que encaje con tu proyecto.