WebAPK su Android

Quando l'utente aggiunge la tua app web progressiva alla schermata Home su Android, Chrome genera automaticamente un APK, a volte chiamato WebAPK. L'installazione tramite un APK consente alla tua app di essere visualizzata nell'avvio app, nelle impostazioni app di Android e di registrare un insieme di filtri intent.

L'installazione di una PWA su Android fa molto di più che aggiungere l'app web progressiva alla schermata Home dell'utente. Chrome genera e installa automaticamente un APK speciale della tua app. A volte lo chiamiamo WebAPK. L'installazione tramite un APK consente alla tua app di essere visualizzata nell'avvio app, nelle impostazioni app di Android e di registrare un insieme di filtri intent.

Per generare il file 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 di intent per Android

Quando una Progressive Web App è installata su Android, registra un insieme di filtri per intent per tutti gli URL che rientrano nell'ambito dell'app. Quando un utente fa clic su un link che rientra nell'ambito dell'app, l'app si apre anziché aprirsi in una scheda del browser.

Considera il seguente manifest.json parziale:

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

Quando un'app web che lo utilizza viene avviata dall'Avvio app, si aprehttps://example.com/ come app autonoma, senza la barra del browser.

Il WebAPK includerà i seguenti filtri 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 all'interno di un'app installata per visitarehttps://example.com/read, questo verrà rilevato dall'intent e aperto nella Progressive Web App.

Utilizzo di scope per limitare i filtri di intent

Se non vuoi che la tua Progressive Web App gestisca tutti gli URL all'interno del tuo sito, puoi aggiungere la proprietà scope al manifest della tua web app. La proprietà scope indica ad Android di aprire la tua app web solo se l'URL corrisponde a origin + scope. Ti consente di controllare quali URL verranno gestiti dalla tua app e quali devono essere aperti nel browser. Questa opzione è utile quando hai la tua app e altri contenuti non relativi all'app nello stesso dominio.

Considera il seguente manifest.json parziale:

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

Se viene avviata dal programma di avvio app, si aprirà https://example.com/app/ come app autonoma, senza la barra del browser.

Come prima, il WebAPK generato includerà un filtro per intent, ma con un attributo android:pathPrefix diverso in 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/ - in /app/

Cosa fare

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

Cosa non fare

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

Cosa non fare

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

Consulta scope per saperne di più su scope, su cosa succede se non lo imposti e su come puoi 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. Devono invece essere richieste 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 provi a scattare una foto.

Gestione dello spazio di archiviazione e dello stato dell'app

Anche se l'app web progressiva viene installata tramite un APK, Chrome utilizza il profilo corrente per memorizzare i dati e non verrà separato. In questo modo viene consentita 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 servizio worker è installato e pronto all'uso.

Aggiornamento del WebAPK

Le informazioni su come viene aggiornato un WebAPK sono state spostate in Come Chrome gestisce gli aggiornamenti del manifest dell'app web.

Domande frequenti

Quali icone vengono utilizzate per generare la schermata di benvenuto? :
Consigliamo di fornire almeno due icone: 192 px e 512 px per la schermata di benvenuto. Ci hai segnalato che le icone nella schermata di benvenuto erano troppo piccole. I WebAPK generati in Chrome 71 o versioni successive mostreranno un'icona più grande nella schermata iniziale. Non è richiesta alcuna azione, purché vengano fornite le icone consigliate.
Che cosa succede se l'utente ha già installato l'app nativa per il sito?
Come accade oggi con l'opzione Aggiungi alla schermata Home, gli utenti potranno aggiungere un sito indipendente da qualsiasi app nativa. Se prevedi che gli utenti possano installare entrambe, ti consigliamo di differenziare l'icona o il nome del tuo sito dall'app nativa.
Lo spazio di archiviazione del mio sito installato verrà cancellato se l'utente cancella la cache di Chrome?
Sì.
La mia app verrà reinstallata quando avrò un nuovo dispositivo?
Al momento no, ma riteniamo che sia un'area importante e stiamo esaminando dei modi per renderla disponibile.
Come vengono gestite le autorizzazioni? Vedrò la richiesta di Chrome o quella di Android?
Le autorizzazioni continueranno a essere gestite tramite Chrome. Gli utenti vedranno le richieste di Chrome per concedere le autorizzazioni 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 su cui è eseguito Chrome per Android, in particolare Jelly Bean e versioni successive.
Utilizza WebView?
No, il sito si apre nella versione di Chrome da cui l'utente lo ha aggiunto.
Possiamo caricare gli APK creati sul Play Store?
No. Se vuoi caricare il tuo APK, dai un'occhiata alle Attività web attendibili.
Sono elencati nel Play Store?
No. Se vuoi caricare il tuo APK per la scheda del Play Store, consulta Attività web attendibili.
Sono uno sviluppatore di un altro browser su Android. Posso usufruire di questa procedura di installazione senza problemi? :
Ci stiamo lavorando. Ci impegniamo a renderla disponibile per tutti i browser su Android e a breve forniremo ulteriori dettagli.