Il trasferimento di un'app web installata (PWA) a una nuova origine in genere richiede agli utenti di disinstallare manualmente la vecchia app e reinstallare quella nuova. Questo processo di solito causa la perdita dell'integrazione a livello di sistema operativo, come le scorciatoie della barra delle applicazioni e le autorizzazioni alle notifiche. La migrazione dell'origine delle app web automatizza questa transizione stabilendo un passaggio sicuro tra le origini precedenti e quelle nuove.
La migrazione è una procedura di verifica in due passaggi: il sito nella nuova versione di Sites rivendica il sito precedente come suo predecessore e il sito precedente autorizza il sito nella nuova versione di Sites come suo successore.
Vincoli importanti
Procedura di implementazione
1. Verifica dello stato "Same-Site"
OBBLIGATORIO: sia l'origine nuova che quella precedente DEVONO essere "Same-Site". Devono condividere lo stesso dominio registrabile (eTLD+1).
- Consentito: migrazione da
app.example.comanew.example.com(entrambi condividonoexample.com). - Consentito: migrazione da
example.com/app1aexample.com/app2. - Non consentito: migrazione da
example.comaexample.org(domini registrabili diversi).
2. Configura la nuova applicazione
La nuova applicazione deve dichiarare l'applicazione precedente. La nuova app deve avere un id.
Nel manifest.json del nuovo sito, aggiungi il campo migrate_from:
{
"name": "My New App",
"id": "/demo.html",
"start_url": "/demo.html",
"migrate_from": [
{
"id": "https://old-app.example.com/"
}
]
}
3. Autorizza la migrazione sulla vecchia origine
L'origine precedente deve autorizzare esplicitamente la migrazione per impedire il dirottamento dell'origine. Crea un file di configurazione pubblicato dalla directory .well-known.
Posizione del file: https://old-app.example.com/.well-known/web-app-origin-association
{
"https://new-app.example.com": {
"allow_migration": true
}
}
4. (Facoltativo) Segnala la migrazione in modo proattivo
Per attivare immediatamente la migrazione per gli utenti esistenti senza attendere che visitino il sito nella nuova versione di Sites, aggiorna il manifest del vecchio sito con un suggerimento migrate_to.
{
"migrate_to": [
{
"id": "https://new-app.example.com/",
"install_url": "https://new-app.example.com/demo.html"
}
]
}
5. (Facoltativo) Richiedi agli utenti di eseguire la migrazione
Per impostazione predefinita, agli utenti viene suggerita una migrazione. Per rendere obbligatoria la transizione, imposta behavior su force nel manifest della nuova app.
{
"migrate_from": [
{
"id": "https://old-app.example.com/",
"behavior": "force"
}
]
}
Nota: behavior: "force" non elimina l'app precedente in modo silenzioso. Il browser mostrerà all'utente una finestra di dialogo che richiede di aggiornare alla nuova versione o di rimuovere completamente l'app.
Alternative e supporto dei browser
Richiesta di reinstallazione manuale
Per i browser che non supportano la migrazione automatica, l'utente rimarrà sulla vecchia installazione. Dovresti implementare un elemento UI (ad esempio un banner di notifica) nell'origine precedente che indirizzi l'utente al sito nella nuova versione di Sites.
Le impostazioni dell'utente non verranno migrate e la vecchia app non verrà disinstallata automaticamente.