Mentransfer aplikasi web terinstal (PWA) ke origin baru biasanya mengharuskan pengguna meng-uninstal aplikasi lama secara manual dan menginstal ulang aplikasi baru. Proses ini biasanya menyebabkan hilangnya integrasi tingkat OS, seperti pintasan taskbar dan izin notifikasi. Migrasi Origin Aplikasi Web mengotomatiskan transisi ini dengan membuat pengalihan yang aman antara origin lama dan baru.
Migrasi ini adalah proses verifikasi dua langkah: situs baru mengklaim situs lama sebagai pendahulunya, dan situs lama mengizinkan situs baru sebagai penerusnya.
Batasan Penting
Langkah-langkah implementasi
1. Verifikasi status "Same-Site"
WAJIB: Origin baru dan lama HARUS "Situs yang Sama". Keduanya harus memiliki Domain yang Dapat Didaftarkan (eTLD+1) yang sama.
- Diizinkan: Bermigrasi dari
app.example.comkenew.example.com(keduanya menggunakanexample.com). - Diizinkan: Bermigrasi dari
example.com/app1keexample.com/app2. - Dilarang: Bermigrasi dari
example.comkeexample.org(domain yang dapat didaftarkan berbeda).
2. Mengonfigurasi aplikasi baru
Aplikasi baru harus mendeklarasikan pendahulunya. Aplikasi baru harus memiliki id.
Di manifest.json situs baru, tambahkan kolom migrate_from:
{
"name": "My New App",
"id": "/demo.html",
"start_url": "/demo.html",
"migrate_from": [
{
"id": "https://old-app.example.com/"
}
]
}
3. Memberikan otorisasi migrasi di origin lama
Origin lama harus secara eksplisit mengizinkan migrasi untuk mencegah pembajakan origin. Buat file konfigurasi yang disajikan dari direktori .well-known.
Lokasi file: https://old-app.example.com/.well-known/web-app-origin-association
{
"https://new-app.example.com": {
"allow_migration": true
}
}
4. Memberi sinyal migrasi secara proaktif (Opsional)
Untuk langsung memicu migrasi bagi pengguna yang ada tanpa menunggu mereka mengunjungi situs baru, perbarui manifes situs lama dengan petunjuk migrate_to.
{
"migrate_to": [
{
"id": "https://new-app.example.com/",
"install_url": "https://new-app.example.com/demo.html"
}
]
}
5. Mewajibkan pengguna untuk bermigrasi (Opsional)
Secara default, migrasi disarankan kepada pengguna. Untuk mewajibkan transisi, tetapkan behavior ke force dalam manifes aplikasi baru.
{
"migrate_from": [
{
"id": "https://old-app.example.com/",
"behavior": "force"
}
]
}
Catatan: behavior: "force" tidak akan menghapus aplikasi lama secara otomatis. Browser akan menampilkan dialog kepada pengguna yang mengharuskan mereka Mengupdate ke versi baru atau Menghapus aplikasi sepenuhnya.
Penggantian & dukungan browser
Perintah penginstalan ulang manual
Untuk browser yang tidak mendukung migrasi otomatis, pengguna akan tetap menggunakan penginstalan lama. Anda harus menerapkan elemen UI (misalnya, banner notifikasi) di origin lama yang mengarahkan pengguna ke situs baru.
Setelan pengguna tidak akan dimigrasikan, dan aplikasi lama tidak akan otomatis di-uninstal.