De oorsprong van een geïnstalleerde web-app migreren

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.com naar new.example.com (beide delen example.com).
  • Toegestaan: Migreren van example.com/app1 naar example.com/app2.
  • Verboden: Migreren van example.com naar example.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.