Memigrasikan Origin Aplikasi Web yang Diinstal

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.com ke new.example.com (keduanya menggunakan example.com).
  • Diizinkan: Bermigrasi dari example.com/app1 ke example.com/app2.
  • Dilarang: Bermigrasi dari example.com ke example.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.