WebAPK su Android

Quando l'utente aggiunge la tua app web progressiva alla schermata Home su Android, Chrome genera automaticamente un APK per te, che a volte chiamiamo WebAPK. L'installazione tramite un APK permette alla tua app di essere visualizzata in Avvio app, nelle impostazioni dell'app di Android e di registrare un insieme di filtri per intent.

Installare una PWA su Android non si limita ad aggiungere l'app web progressiva alla schermata Home dell'utente. Chrome genera e installa automaticamente un APK speciale della tua app, che a volte viene chiamato WebAPK. L'installazione tramite un APK consente alla tua app di essere visualizzata in Avvio app, nelle impostazioni dell'app di Android e di registrare un insieme di filtri per intent.

Per generare il WebAPK, Chrome esamina il manifest dell'app web e altri metadati. Quando viene rilevato un aggiornamento del file manifest, Chrome deve generare un nuovo APK.

Filtri per intent di Android

Quando un'app web progressiva viene installata su Android, viene registrato un insieme di filtri di intent per tutti gli URL nell'ambito dell'app. Quando un utente fa clic su un link che rientra nell'ambito dell'app, l'app viene aperta anziché in una scheda del browser.

Considera quanto segue manifest.json parziale:

"start_url": "/",
"display": "standalone",

Quando un'app web che la utilizza viene avviata da Avvio applicazioni, viene aperta https://example.com/ come app autonoma, senza browser Chrome.

Il WebAPK includerà i seguenti filtri per 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 l'utente fa clic su un link in un'app installata che rimanda a https://example.com/read, viene catturato dall'intent e aperto nell'app web progressiva.

Utilizzo di scope per limitare i filtri per intent

Se non vuoi che la tua app web progressiva gestisca tutti gli URL del tuo sito, puoi aggiungere la proprietà scope al file manifest dell'app web. La proprietà scope indica ad Android di aprire la tua app web solo se l'URL corrisponde a origin + scope. Ti permette di controllare quali URL verranno gestiti dalla tua app e quali aprire nel browser. Questa operazione è utile se la tua app e altri contenuti non app sono nello stesso dominio.

Considera quanto segue manifest.json parziale:

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

Una volta avviata da Avvio applicazioni, si apre https://example.com/app/ come app autonoma, senza browser Chrome.

Come prima, il WebAPK generato includerà un filtro per intent, ma con un attributo android:pathPrefix diverso nel AndroidManifest.xml dell'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>

Vediamo alcuni esempi:

Cosa fare

https://example.com/app/ - entro /app/

Cosa fare

https://example.com/app/read/book - entro /app/

Cosa non fare

https://example.com/help/ - non in /app/

Cosa non fare

https://example.com/about/ - non in /app/

Consulta scope per ulteriori informazioni su scope, su cosa succede quando non lo imposti e su come utilizzarlo per definire l'ambito della tua app.

Gestione delle autorizzazioni

Le autorizzazioni funzionano come le altre app web e non possono essere richieste al momento dell'installazione. ma devono essere richiesti in fase di esecuzione, idealmente solo quando ne hai davvero bisogno. Ad esempio, non chiedere l'autorizzazione di accesso alla fotocamera al primo caricamento, ma attendi che l'utente tenti di scattare una foto.

Gestione dello spazio di archiviazione e dello stato delle app

Anche se l'app web progressiva viene installata tramite un APK, Chrome utilizza il profilo corrente per archiviare tutti i dati, che non verranno separati. Ciò consente un'esperienza condivisa tra il browser e l'app installata. I cookie sono condivisi e attivi, qualsiasi spazio di archiviazione lato client è accessibile e il worker del servizio è installato e pronto.

Aggiornamento del WebAPK

Le informazioni su come viene aggiornato un WebAPK sono state spostate nella sezione In che modo Chrome gestisce gli aggiornamenti del file manifest dell'app web.

Domande frequenti

Quali icone vengono utilizzate per generare la schermata iniziale? :
Ti consigliamo di fornire almeno due icone: 192 px e 512 px per la schermata iniziale. Ci avete detto che le icone sulla schermata iniziale erano troppo piccole. Per i webAPK generati in Chrome 71 o versioni successive verrà visualizzata un'icona più grande sulla schermata iniziale. Non è necessario alcun intervento, purché vengano fornite le icone consigliate.
Cosa succede se l'utente ha già installato l'app nativa per il sito?
Come nel caso della funzionalità Aggiungi alla schermata Home oggi, gli utenti potranno aggiungere un sito indipendentemente da qualsiasi app nativa. Se prevedi che gli utenti possano installare entrambi, ti consigliamo di distinguere l'icona o il nome del sito da quella dell'app nativa.
Lo spazio di archiviazione del mio sito installato verrà cancellato se l'utente svuota la cache di Chrome?
Sì.
La mia app verrà reinstallata quando acquisterò un nuovo dispositivo?
Al momento no, ma riteniamo che sia un'area importante e stiamo cercando come far funzionare le cose.
Come vengono gestite le autorizzazioni? Vedrò il prompt di Chrome o quello di Android?
Le autorizzazioni continueranno a essere gestite tramite Chrome. Gli utenti vedranno le richieste di concessione delle autorizzazioni di Chrome e potranno modificarle nelle impostazioni di Chrome.
Su quali versioni di Android funzionerà?
Le app web progressive possono essere installate su tutte le versioni di Android che eseguono Chrome per Android, in particolare Jelly Bean e versioni successive.
Viene utilizzato il componente WebView?
No, il sito si apre nella versione di Chrome da cui l'utente ha aggiunto il sito.
Possiamo caricare gli APK creati sul Play Store?
No. Per caricare un APK personale, dai un'occhiata alla sezione Attività web attendibili.
Sono elencati nel Play Store?
No. Se vuoi caricare un APK personalizzato per la scheda del Play Store, dai un'occhiata alla sezione Attività web attendibili.
Sono uno sviluppatore di un altro browser su Android. Posso avere questa procedura di installazione senza intoppi? :
Ci stiamo lavorando. Ci impegniamo a rendere disponibile questa funzionalità per tutti i browser su Android e presto forniremo ulteriori dettagli.