Você tem um site e quer que ele esteja no celular das pessoas como um app. Pesquise como fazer isso e você vai esbarrar em três termos várias vezes: PWA, TWA e WebView. Eles parecem parecidos, todos mostram páginas web, e muitas vezes são mal explicados.
Na verdade eles são bem diferentes, e escolher o certo te poupa muito retrabalho. Veja o que cada um é, o que pode e não pode fazer, e quando faz sentido.
Opção 1: um Progressive Web App (PWA)
Um PWA é um site que se comporta mais como um app. Ele tem um manifesto de app web (um pequeno arquivo JSON com nome, ícone e cores) e geralmente um service worker, um script que pode guardar arquivos em cache para que o site carregue mesmo sem conexão. Quando alguém visita um PWA em um navegador compatível, pode instalá-lo na tela inicial. Ele então abre em sua própria janela, sem a barra de endereço.
O que é bom: não há um app separado para compilar. Você atualiza seu site e todos os usuários têm a nova versão na hora. Com um service worker, dá para fazê-lo funcionar offline.
O que é limitado: as pessoas precisam encontrar seu site primeiro e depois tocar em instalar, o que muitas nunca fazem. Um PWA simples não é um arquivo que você pode enviar ao Google Play, e não é um APK que você pode entregar a alguém. O acesso aos recursos do celular depende do que o navegador expõe por meio de APIs web.
Combina com: sites que as pessoas já visitam com frequência, onde instalar é um bônus e não o objetivo principal.
Opção 2: uma Trusted Web Activity (TWA)
Uma Trusted Web Activity é um pequeno app Android que abre seu PWA em tela cheia usando o navegador do usuário, como o Chrome. Ela é baseada no protocolo Custom Tabs, então a página é renderizada pelo próprio navegador, e não pelo app.
Há dois requisitos. Primeiro, precisa ficar comprovado que seu site e seu app pertencem ao mesmo dono. Isso é feito com o Digital Asset Links: você coloca um arquivo em /.well-known/assetlinks.json no seu domínio que lista o nome do pacote do seu app e a impressão digital do certificado de assinatura. Segundo, a documentação do Google diz que seu site deve atender aos critérios para ser adicionado à tela inicial, o que na prática significa um PWA de verdade com manifesto. A ferramenta do Google para criar TWAs é o Bubblewrap, uma ferramenta de linha de comando para Node.js.
Se a verificação falhar, ou o navegador não suportar TWAs, o Google diz que ele volta para uma Custom Tab com uma barra de navegador simples em vez de tela cheia. Essa é a surpresa mais comum que as pessoas encontram.
O que é bom: você tem um app Android de verdade que pode ir para o Google Play, e o conteúdo é o seu PWA ao vivo, então as atualizações na web aparecem na hora.
O que é limitado: você precisa de um PWA funcionando e do controle do domínio para hospedar o arquivo de asset links. A impressão digital nesse arquivo precisa corresponder à chave que assina o app que os usuários realmente instalam, e com a Assinatura de apps do Play a cópia do Google Play é assinada com a chave de assinatura de apps do Google, então o Google sugere listar as impressões digitais tanto dessa chave quanto da sua chave de upload. Os recursos do celular continuam sendo só o que o navegador oferece por meio de APIs web. E o app depende de haver um navegador compatível instalado.
Combina com: equipes que já têm um PWA sólido no próprio domínio e querem colocá-lo na Play Store com o mínimo de código extra.
Opção 3: um app WebView
Um app WebView é um app Android nativo que mostra conteúdo web dentro da sua própria janela usando o componente WebView do Android. O WebView é um motor de navegador sem o navegador em volta: sem barra de endereço, sem abas, só a sua página. A documentação do Google o descreve como a escolha para exibir seu próprio conteúdo web quando você quer flexibilidade na interface.
A grande diferença em relação a uma TWA é o controle. O app decide o que acontece no botão voltar, como é a tela de abertura, se há menus nativos, o que mostrar quando a rede cai e quais links abrem dentro do app. O Android também permite que um app WebView conecte JavaScript a código nativo com addJavascriptInterface, para que sua página possa chamar recursos reais do celular que não estão disponíveis na web. A documentação do Google traz um aviso importante: só exponha essa ponte a HTML e JavaScript que você mesmo escreveu.
O que é bom: funciona com qualquer site ou pasta de arquivos HTML, sem precisar de PWA, manifesto ou arquivo de asset links. As páginas podem ser incluídas no app para abrirem na hora, mesmo offline. Recursos nativos ficam disponíveis por meio de uma ponte.
O que é limitado: o app tem seu próprio armazenamento, então o login de um usuário no seu site pelo Chrome não é levado junto. Se você empacota um site ao vivo, é responsável por manter o app atualizado quando algo nativo precisar mudar.
Combina com: apps HTML, jogos, ferramentas, sites de pequenas empresas, apps internos de empresas e qualquer coisa que se beneficie de extras nativos.
Lado a lado
Recursos do celular
- PWA: as APIs web que o navegador suportar.
- TWA: o mesmo, já que o navegador renderiza a página.
- App WebView: APIs web mais tudo o que o app expõe por uma ponte JavaScript.
Offline
- PWA e TWA: o modo offline funciona se o seu service worker guardar em cache o que for necessário.
- App WebView: páginas incluídas no app funcionam offline sem service worker; apps de site podem mostrar sua própria tela offline.
Google Play
- PWA: não sozinho. Você precisa empacotá-lo, geralmente como TWA.
- TWA e app WebView: os dois são apps Android normais e podem ser publicados como AAB.
Uma regra do Play vale tanto para TWAs quanto para apps WebView. A política de spam do Google Play não permite apps cujo objetivo principal é mostrar um webview de um site sem permissão do dono do site. Empacote o seu próprio site, ou um para o qual você tenha permissão. O Play também não permite apps com funcionalidade muito limitada, então dê às pessoas um motivo para instalar o app em vez de só salvar um favorito.
Qual você deve escolher?
- Você só quer um botão de instalar no seu site: PWA.
- Você tem um PWA maduro no seu próprio domínio e quer colocá-lo no Play com conteúdo web ao vivo: TWA.
- Você quer recursos nativos, HTML offline, menus e controle total, ou não tem um PWA: app WebView.
Como o Free HTML to APK faz
O Free HTML to APK cria apps WebView. Você pode começar pela URL de um site, arquivos HTML, um ZIP ou uma pasta, e receber um APK assinado mais um AAB para o Google Play. O compilador do site freehtmltoapk.com é grátis, não precisa de conta e não adiciona marca d'água, e o app Android "HTML to APK: Website to App" faz o mesmo no seu celular.
Suas páginas podem usar a ponte JavaScript FreeApp integrada para recursos do celular como vibração, notificações, câmera, leitura de QR e código de barras, localização e compartilhamento de arquivos. Uma chamada é simples assim:
<button onclick="FreeApp.vibrate(30)">Tap</button>
Apps HTML incluídos no pacote funcionam totalmente offline, e apps de site mostram uma página offline amigável e reconectam quando a conexão volta. Como é um app WebView, não há arquivo de Digital Asset Links para configurar. Se você já tem um PWA, o service worker dele continua funcionando quando o app o carrega pela URL.
Leia mais em PWA para APK ou site para app, e escolha o caminho que combina com o seu projeto.