Als je een geïnstalleerde web-app (PWA) overzet naar een nieuwe oorsprong, moeten gebruikers de oude app meestal handmatig verwijderen en de nieuwe app opnieuw installeren. Dit proces leidt meestal tot het verlies van integratie op OS-niveau, zoals snelkoppelingen op de taakbalk en meldingsrechten. De migratie van de oorsprong van de web-app automatiseert deze overgang door een beveiligde overdracht tussen de oude en nieuwe oorsprong tot stand te brengen.
De migratie is een verificatieproces in 2 stappen: de nieuwe site claimt de oude site als voorganger en de oude site autoriseert de nieuwe site als opvolger.
Belangrijke beperkingen
Stapsgewijze implementatie
1. Verificatie van de status Same-Site
VERPLICHT: De nieuwe en oude oorsprongen MOETEN Same-Site zijn. Ze moeten hetzelfde registreerbare domein (eTLD+1) delen.
- Toegestaan: Migreren van
app.example.comnaarnew.example.com(beide delenexample.com). - Toegestaan: Migreren van
example.com/app1naarexample.com/app2. - Verboden: Migreren van
example.comnaarexample.org(verschillende registreerbare domeinen).
2. De nieuwe app configureren
De nieuwe app moet de voorganger definiëren. De nieuwe app moet een id hebben.
Voeg in de manifest.json van de nieuwe site het veld migrate_from toe:
{
"name": "My New App",
"id": "/demo.html",
"start_url": "/demo.html",
"migrate_from": [
{
"id": "https://old-app.example.com/"
}
]
}
3. De migratie autoriseren op de oude oorsprong
De oude oorsprong moet de migratie expliciet autoriseren om kaping van de oorsprong te voorkomen. Maak een configuratiebestand dat wordt geleverd vanuit de directory .well-known.
Bestandslocatie: https://old-app.example.com/.well-known/web-app-origin-association
{
"https://new-app.example.com": {
"allow_migration": true
}
}
4. De migratie proactief aankondigen (optioneel)
Als je de migratie onmiddellijk wilt activeren voor bestaande gebruikers zonder te wachten tot ze de nieuwe site bezoeken, update je het manifest van de oude site met een migrate_to-hint.
{
"migrate_to": [
{
"id": "https://new-app.example.com/",
"install_url": "https://new-app.example.com/demo.html"
}
]
}
5. Vereisen dat gebruikers migreren (optioneel)
Standaard wordt een migratie voorgesteld aan gebruikers. Als je de overstap verplicht wilt maken, stel je de behavior in op force in het manifest van de nieuwe app.
{
"migrate_from": [
{
"id": "https://old-app.example.com/",
"behavior": "force"
}
]
}
Opmerking: behavior: "force" verwijdert de oude app niet op de achtergrond. De browser toont de gebruiker een dialoogvenster waarin deze wordt gevraagd de app te updaten naar de nieuwe versie of de app helemaal te verwijderen.
Fallbacks en browserondersteuning
Prompt voor handmatige herinstallatie
In browsers die automatische migratie niet ondersteunen, blijft de gebruiker de oude installatie gebruiken. Implementeer een UI-element (bijvoorbeeld een meldingsbanner) op de oude oorsprong die de gebruiker naar de nieuwe site leidt.
De instellingen van de gebruiker worden niet gemigreerd en de oude app wordt niet automatisch verwijderd.