Migracja źródła zainstalowanej aplikacji internetowej

Przeniesienie zainstalowanej aplikacji internetowej (PWA) do nowego źródła zwykle wymaga od użytkowników ręcznego odinstalowania starej aplikacji i ponownego zainstalowania nowej. Ten proces zwykle powoduje utratę integracji na poziomie systemu operacyjnego, np. skrótów na pasku zadań i zgody na wyświetlanie powiadomień. Migracja pochodzenia aplikacji internetowej automatyzuje to przejście, ustanawiając bezpieczne przekazywanie między starym a nowym źródłem.

Migracja to proces weryfikacji dwuetapowej: witryna w nowym formacie zgłasza starą witrynę jako poprzednika, a stara witryna autoryzuje witrynę w nowym formacie jako następcę.

Ważne ograniczenia

Etapy wdrażania

1. Weryfikacja stanu „Same-Site”

OBOWIĄZKOWO: zarówno nowe, jak i stare źródła MUSZĄ być „Same-Site”. Muszą mieć tę samą domenę możliwą do zarejestrowania (eTLD+1).

  • Dozwolone: migracja z app.example.com do new.example.com (obie usługi mają ten sam identyfikator example.com).
  • Dozwolone: migracja z example.com/app1 do example.com/app2.
  • Niedozwolone: migracja z example.com do example.org (różne domeny możliwe do zarejestrowania).

2. Konfigurowanie nowej aplikacji

Nowa aplikacja musi deklarować swojego poprzednika. Nowa aplikacja musi mieć id.

W pliku manifest.json nowej witryny dodaj pole migrate_from:

{
  "name": "My New App",
  "id": "/demo.html",
  "start_url": "/demo.html",
  "migrate_from": [
    {
      "id": "https://old-app.example.com/"
    }
  ]
}

3. Autoryzowanie migracji w starym miejscu pochodzenia

Stara lokalizacja musi wyraźnie autoryzować migrację, aby zapobiec przejęciu lokalizacji. Utwórz plik konfiguracji udostępniany z katalogu .well-known.

Lokalizacja pliku: https://old-app.example.com/.well-known/web-app-origin-association

{
  "https://new-app.example.com": {
    "allow_migration": true
  }
}

4. Proaktywne sygnalizowanie migracji (opcjonalnie)

Aby natychmiast uruchomić migrację dla dotychczasowych użytkowników bez czekania, aż odwiedzą witrynę w nowym formacie, zaktualizuj plik manifestu starej witryny, dodając wskazówkę migrate_to.

{
  "migrate_to": [
    {
      "id": "https://new-app.example.com/",
      "install_url": "https://new-app.example.com/demo.html"
    }
  ]
}

5. Wymaganie od użytkowników migracji (opcjonalnie)

Domyślnie użytkownikom sugerowana jest migracja. Aby przejście było obowiązkowe, ustaw behavior na force w pliku manifestu nowej aplikacji.

{
  "migrate_from": [
    {
      "id": "https://old-app.example.com/",
      "behavior": "force"
    }
  ]
}

Uwaga: behavior: "force" nie usuwa starej aplikacji bez powiadomienia. Przeglądarka wyświetli użytkownikowi okno z prośbą o zaktualizowanie aplikacji do nowej wersji lub całkowite jej usunięcie.

Kreacje zastępcze i obsługa przeglądarek

Prośba o ręczną ponowną instalację

W przypadku przeglądarek, które nie obsługują automatycznej migracji, użytkownik pozostanie przy starej instalacji. W starym źródle należy zaimplementować element interfejsu (np. baner z powiadomieniem), który przekierowuje użytkownika do nowej wersji Witryn.

Ustawienia użytkownika nie zostaną przeniesione, a stara aplikacja nie zostanie automatycznie odinstalowana.