انتقال مبدأ برنامه وب نصب‌شده

ویژگی‌های وب: انتقال مبدأ برنامه وب

انتقال برنامه وب نصب‌شده (PWA) به مبدأ جدید معمولاً مستلزم این است که کاربران برنامه قدیمی را به‌صورت دستی حذف نصب کنند و برنامه جدید را بازنصب کنند. این فرایند معمولاً باعث ازبین رفتن ادغام در سطح سیستم‌عامل می‌شود، مثل میان‌برهای نوار وظیفه و اجازه‌های اعلان. «انتقال مبدأ برنامه وب» این انتقال را با ایجاد یک واگذاری امن بین مبدأ قدیمی و جدید به‌طور خودکار انجام می‌دهد.

انتقال فرایندی دومرحله‌ای برای درستی‌سنجی است: سایت جدید ادعا می‌کند که سایت قدیمی پیشین آن است و سایت قدیمی به سایت جدید به‌عنوان جانشین خود مجوز می‌دهد.

محدودیت‌های مهم

مراحل پیاده‌سازی

۱. درستی‌سنجی وضعیت «Same-Site»

اجباری: هر دو مبدأ جدید و قدیمی باید «Same-Site» باشند. آن‌ها باید دامنه قابل‌ثبت (eTLD+1) یکسانی را هم‌رسانی کنند.

  • مجاز: انتقال از app.example.com به new.example.com (هر دو example.com را هم‌رسانی می‌کنند).
  • مجاز: انتقال از example.com/app1 به example.com/app2.
  • ممنوع: انتقال از example.com به example.org (دامنه‌های قابل‌ثبت متفاوت).

۲. پیکربندی برنامه جدید

برنامه جدید باید برنامه قبلی را اعلام کند. برنامه جدید باید id داشته باشد.

در manifest.json سایت جدید، فیلد migrate_from را اضافه کنید:

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

۳. انتقال را در مبدأ قدیمی مجاز کنید

مبدأ قدیمی باید صریحاً انتقال را مجاز کند تا از ربودن مبدأ جلوگیری شود. فایل پیکربندی‌ای ایجاد کنید که از دایرکتوری .well-known ارائه شود.

مکان فایل: https://old-app.example.com/.well-known/web-app-origin-association

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

۴. پیش‌کنشی انتقال را نشان دهید (اختیاری)

برای راه‌اندازی فوری انتقال برای کاربران موجود بدون اینکه منتظر بمانید تا از سایت جدید بازدید کنند، مانیفست سایت قدیمی را با راهنمایی migrate_to به‌روز کنید.

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

۵. الزام کاربران به انتقال (اختیاری)

به‌طور پیش‌فرض، انتقال به کاربران پیشنهاد می‌شود. برای اجباری کردن انتقال، behavior را در مانیفست برنامه جدید روی force تنظیم کنید.

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

توجه: behavior: "force" برنامه قدیمی را بدون اطلاع حذف نمی‌کند. مرورگر کادر گفتگویی به کاربر نشان می‌دهد که از او می‌خواهد برنامه را به نسخه جدید به‌روزرسانی کند یا برنامه را کاملاً بردارد.

پشتیبانی مرورگر و بازگشت‌ها

پیام‌واره بازنصب کردن دستی

برای مرورگرهایی که از انتقال خودکار پشتیبانی نمی‌کنند، کاربر در نصب قدیمی باقی خواهد ماند. باید عنصر میانای کاربر (مثلاً برنمای اعلان) در مبدأ قدیمی پیاده‌سازی کنید که کاربر را به سایت جدید هدایت کند.

تنظیمات کاربر منتقل نخواهد شد و برنامه قدیمی به‌طور خودکار حذف نصب نخواهد شد.