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.comdonew.example.com(obie usługi mają ten sam identyfikatorexample.com). - Dozwolone: migracja z
example.com/app1doexample.com/app2. - Niedozwolone: migracja z
example.comdoexample.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.