WebAPKs no Android

Quando o usuário adiciona seu App Web Progressivo à tela inicial no Android, o Chrome gera automaticamente um APK para você, que às vezes chamamos de WebAPK. A instalação por um APK possibilita que o app apareça no Acesso rápido aos apps, nas configurações do app Android e registre um conjunto de filtros de intent.

Instalar 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, isso é chamado de WebAPK. A instalação por um APK possibilita que o app apareça no Acesso rápido aos apps, nas configurações do app 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 no manifesto for detectada, o Chrome vai precisar gerar um novo APK.

Filtros de intent do Android

Quando um App Web Progressivo é 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á dentro do escopo do app, o app é 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 aos apps, ele abre https://example.com/ como um app independente, sem a necessidade do navegador Chrome.

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 o Progressive Web App processe todos os URLs do site, adicione a propriedade scope ao manifesto do app da Web. A propriedade scope instrui o Android a abrir seu app da Web apenas se o URL corresponder a origin + scope. Ele oferece controle sobre quais URLs serão processados pelo app e quais devem ser abertos no navegador. Isso é útil quando seu app e outros conteúdos que não são do app estão no mesmo domínio.

Considere o seguinte manifest.json parcial:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

Quando iniciado pelo Acesso rápido aos apps, 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>

Vamos analisar alguns exemplos:

O que fazer

https://example.com/app/: em /app/

O que fazer

https://example.com/app/read/book: em /app/

O que não fazer

https://example.com/help/: não está em /app/

O que não fazer

https://example.com/about/: não está em /app/

Consulte scope para mais informações sobre scope, o que acontece quando ele não é definido e como usá-lo para definir o escopo do app.

Gerenciar permissões

As permissões funcionam da mesma maneira que outros apps da Web e não podem ser solicitadas no momento da instalação. Em vez disso, eles precisam ser solicitados no ambiente de execução, de preferência somente quando você realmente precisar deles. Por exemplo, não peça a permissão da câmera no primeiro carregamento, mas aguarde até que o usuário tente tirar uma foto.

Como gerenciar o armazenamento e o estado do app

Mesmo que o Progressive Web App seja instalado por um APK, o Chrome usa o perfil atual para armazenar dados, que 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 fica acessível e o service worker está instalado e pronto para uso.

Como atualizar o WebAPK

As informações sobre como um WebAPK é atualizado foram movidas para Como o Chrome processa atualizações no manifesto de 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 ícones: 192 px e 512 px para a tela de apresentação. Ouvimos vocês que os ícones na tela de apresentação eram muito pequenos. Os WebAPKs gerados no Chrome 71 ou posterior 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 para o site?
Assim como ocorre na tela inicial, os usuários podem adicionar um site independente de qualquer app nativo. Se você espera que os usuários instalem os dois, recomendamos diferenciar o ícone ou o nome do site do app nativo.
O armazenamento do meu site instalado será apagado se o usuário limpar o cache do Chrome?
Sim.
Meu app será reinstalado quando eu receber um novo dispositivo?
No momento, não, mas acreditamos que essa é uma área importante e estamos investigando maneiras de fazer isso funcionar.
Como as permissões são tratadas? Vou ver o prompt do Chrome ou o do Android?
As permissões ainda serão gerenciadas no Chrome. Os usuários verão as solicitações do Chrome para conceder permissões e poderão editá-las nas configurações do navegador.
Em quais versões do Android isso funcionará?
Os Progressive Web Apps podem ser instalados em todas as versões do Android com o Chrome para Android, mais especificamente, Jelly Bean e versões mais recentes.
Isso usa a WebView?
Não, o site é aberto na versão do Chrome a partir da qual o usuário o adicionou.
Podemos fazer o upload dos APKs criados para a Play Store?
Não. Se você quiser fazer upload do seu próprio APK, confira Atividades confiáveis na Web.
Eles estão listados na Play Store?
Não. Se você quiser fazer upload do seu próprio APK para a listagem na Play Store, confira Atividades confiáveis na Web.
Sou desenvolvedor de outro navegador no Android. Posso realizar esse processo de instalação sem complicações? :
Estamos trabalhando nisso. Nosso compromisso é disponibilizar esse recurso para todos os navegadores no Android. Divulgaremos mais detalhes em breve.