Quando o usuário adiciona seu Progressive Web App à tela inicial no Android, o Chrome gera automaticamente um APK para você, que às vezes chamamos de WebAPK. A instalação por um APK permite que seu app apareça no acesso rápido, nas configurações de apps do Android e registre um conjunto de filtros de intent.
A instalação de um PWA no Android faz mais do que apenas adicionar o Progressive Web App à tela inicial do usuário. O Chrome gera e instala automaticamente um APK especial do seu app. Às vezes, nos referimos a ele como WebAPK. A instalação por um APK permite que seu app apareça no acesso rápido, nas configurações de apps do Android e registre um conjunto de filtros de intent.
Para gerar o WebAPK, o Chrome analisa o manifesto do app da Web e outros metadados. Quando uma atualização do manifesto é detectada, o Chrome precisa gerar um novo APK.
Filtros de intent do Android
Quando um Progressive Web App é instalado no Android, ele registra um conjunto de filtros de intent para todos os URLs no escopo do app. Quando um usuário clica em um link que está no escopo do app, ele é aberto em vez de ser aberto em uma guia do navegador.
Considere o seguinte manifest.json parcial:
"start_url": "/",
"display": "standalone",
Quando um app da Web que o usa é iniciado no acesso rápido, ele abre https://example.com/ como um app independente, sem o Chrome do navegador.
O WebAPK incluiria os seguintes filtros de intent:
<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>
Se o usuário clicar em um link em um app instalado para https://example.com/read, ele será capturado pela intent e aberto no Progressive Web App.
Como usar scope para restringir filtros de intent
Se você não quiser que seu Progressive Web App processe todos os URLs no seu site,
adicione a propriedade scope ao
manifesto do app da Web. A propriedade scope informa ao Android para abrir seu app da web
somente se o URL corresponder a origin + scope. Ela permite controlar quais URLs serão processados pelo seu app e quais serão abertos no navegador.
Isso é útil quando você tem seu app e outros conteúdos não relacionados no mesmo domínio.
Considere o seguinte manifest.json parcial:
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
Quando iniciado no acesso rápido, ele abre https://example.com/app/ como um app independente, sem o Chrome do navegador.
Como antes, o WebAPK gerado incluiria um filtro de intent, mas com um atributo android:pathPrefix diferente no AndroidManifest.xml do 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>
Confira alguns exemplos:
https://example.com/app/ - em /app/
https://example.com/app/read/book - em /app/
https://example.com/help/ - não em /app/
https://example.com/about/ - não em /app/
Consulte scope para mais informações sobre
scope, o que acontece quando você não o define e como usá-lo para definir
o escopo do seu app.
Gerenciar permissões
As permissões funcionam da mesma forma que outros apps da Web e não podem ser solicitadas no momento da instalação. Em vez disso, elas precisam ser solicitadas no momento da execução, de preferência apenas quando você realmente precisar delas. Por exemplo, não peça permissão da câmera no primeiro carregamento, mas espere até que o usuário tente tirar uma foto.
Gerenciar o armazenamento e o estado do app
Embora o Progressive Web App seja instalado por um APK, o Chrome usa o perfil atual para armazenar dados, e eles não serão separados. Isso permite uma experiência compartilhada entre o navegador e o app instalado. Os cookies são compartilhados e ativos, qualquer armazenamento do lado do cliente é acessível e o service worker é instalado e está pronto para uso.
Atualizar o WebAPK
As informações sobre como um WebAPK é atualizado foram movidas para Como o Chrome processa atualizações do manifesto do app da Web.
Perguntas frequentes
Quais ícones são usados para gerar a tela de apresentação?
Recomendamos que você forneça pelo menos dois tamanhos de ícones para a tela de apresentação: 192 px e 512 px. Recebemos feedback de que os ícones na tela de apresentação eram muito pequenos. Os WebAPKs gerados no Chrome 71 ou mais recente vão mostrar um ícone maior na tela de apresentação. Nenhuma ação é necessária, desde que os ícones recomendados sejam fornecidos.
O que acontece se o usuário já tiver instalado o app nativo do site?
Assim como acontece hoje com a opção "Adicionar à tela inicial", os usuários poderão adicionar um site independente de apps nativos. Se você espera que os usuários instalem os dois, recomendamos diferenciar o ícone ou o nome do seu site do app nativo.
O armazenamento do meu site instalado será limpo se o usuário limpar o cache do Chrome?
Sim.
Meu app será reinstalado quando eu receber um novo dispositivo?
Não no momento, mas achamos que essa é uma área importante e estamos investigando maneiras de fazer isso funcionar.
Como as permissões são processadas? Vou ver o prompt do Chrome ou do Android?
As permissões ainda serão gerenciadas pelo Chrome. Os usuários vão ver os prompts do Chrome para conceder permissões e poderão editá-las nas configurações do navegador.
Em quais versões do Android isso funciona?
Os Progressive Web Apps podem ser instalados em todas as versões do Android que executam o Google Chrome para Android, especificamente o Jelly Bean e versões mais recentes.
Isso usa a WebView?
Não, o site é aberto na versão do Chrome em que o usuário adicionou o site.
Podemos fazer upload dos APKs criados na Google Play Store?
Não. Se você quiser fazer upload do seu próprio APK, confira Atividades da Web confiáveis.
Eles estão listados na Google Play Store?
Não. Se você quiser fazer upload do seu próprio APK para listagem na Play Store, confira Atividades da Web confiáveis.
Sou desenvolvedor de outro navegador no Android. Posso ter esse processo de instalação contínuo?
Estamos resolvendo esse problema. Estamos comprometidos em disponibilizar isso para todos os navegadores no Android e teremos mais detalhes em breve.