Quando l'utente aggiunge la tua app web progressiva alla schermata Home su Android, Chrome genera automaticamente un APK, che a volte chiamiamo WebAPK. L'installazione tramite APK consente alla tua app di essere visualizzata in Avvio app, nelle impostazioni delle app di Android e di registrare un insieme di filtri per intent.
L'installazione di 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. A volte lo chiamiamo WebAPK. L'installazione tramite APK consente alla tua app di essere visualizzata in Avvio app, nelle impostazioni delle app di Android e di registrare un insieme di filtri per intent.
Per generare il WebAPK, Chrome esamina il file manifest dell'app web e altri metadati. Quando viene rilevato un aggiornamento del file manifest, Chrome dovrà generare un nuovo APK.
Filtri per intent di Android
Quando un'app web progressiva viene installata su Android, registra un insieme di filtri per 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 il seguente manifest.json parziale:
"start_url": "/",
"display": "standalone",
Quando un'app web che lo utilizza viene avviata da Avvio app, apre https://example.com/ come app autonoma, senza alcun chrome del browser.
Il WebAPK includerebbe 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 all'interno di un'app installata a https://example.com/read, questo viene intercettato 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 all'interno del tuo sito,
puoi aggiungere la proprietà scope al
file manifest dell'app web. La proprietà scope indica ad Android di aprire l'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 l'app e altri contenuti non app sullo stesso dominio.
Considera il seguente manifest.json parziale:
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
Quando viene avviata da Avvio app, apre https://example.com/app/ come app autonoma, senza alcun chrome del browser.
Come in precedenza, il WebAPK generato includerebbe 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>
Diamo un'occhiata ad alcuni esempi:
https://example.com/app/ - all'interno di /app/
https://example.com/app/read/book - all'interno di /app/
https://example.com/help/ - non in /app/
https://example.com/about/ - non in /app/
Per ulteriori informazioni su scope, su cosa succede quando non lo imposti e su come puoi utilizzarlo per definire
l'ambito della tua app, consulta la sezione
scope.
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 runtime, idealmente solo quando sono realmente necessarie. Ad esempio, non chiedere l'autorizzazione fotocamera al primo caricamento, ma attendi che l'utente tenti di 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 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, lo spazio di archiviazione lato client è accessibile e il service worker è installato e pronto all'uso.
Aggiornamento del WebAPK
Le informazioni su come viene aggiornato un WebAPK sono state spostate nella sezione Come Chrome gestisce gli aggiornamenti del file manifest dell'app web.
Domande frequenti
Quali icone vengono utilizzate per generare la schermata Splash?
Ti consigliamo di fornire almeno due dimensioni delle icone per la schermata Splash: 192 px e 512 px. Ci hai riferito che le icone sulla schermata Splash erano troppo piccole. I WebAPK generati in Chrome 71 o versioni successive mostreranno un'icona più grande sulla schermata Splash. Non è richiesta alcuna azione, a condizione che vengano fornite le icone consigliate.
Che cosa succede se l'utente ha già installato l'app nativa per il sito?
Come per l'aggiunta alla schermata Home, gli utenti potranno aggiungere un sito indipendentemente dalle app native. Se prevedi che gli utenti possano installare entrambe le app, 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 riceverò un nuovo dispositivo?
Al momento no, ma riteniamo che sia un'area importante e stiamo studiando come farla funzionare.
Come vengono gestite le autorizzazioni? Verrà visualizzato il prompt di Chrome o quello di Android?
Le autorizzazioni continueranno a essere gestite tramite Chrome. Gli utenti vedranno i prompt di Chrome per concedere le autorizzazioni e potranno modificarli 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 utilizzata la 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. Se vuoi caricare il tuo APK, consulta le attività web attendibili.
Sono elencati nel Play Store?
No. Se vuoi caricare il tuo APK per l'elenco nel Play Store, consulta le attività web attendibili.
Sono uno sviluppatore di un altro browser su Android. Posso avere questa procedura di installazione senza interruzioni?
Ci stiamo lavorando. Ci impegniamo a rendere questa funzionalità disponibile per tutti i browser su Android e forniremo maggiori dettagli a breve.