การย้ายข้อมูลต้นทางของเว็บแอปที่ติดตั้ง

โดยปกติแล้ว การโอนเว็บแอป (PWA) ที่ติดตั้งไว้ไปยังต้นทางใหม่กำหนดให้ผู้ใช้ต้องถอนการติดตั้งแอปเก่าและติดตั้งแอปใหม่ด้วยตนเอง โดยปกติแล้ว กระบวนการนี้จะทำให้สูญเสียการผสานรวมระดับระบบปฏิบัติการ เช่น ทางลัดบนแถบงานและสิทธิ์การแจ้งเตือน การย้ายข้อมูลต้นทางของเว็บแอปจะทำให้การเปลี่ยนนี้เป็นไปโดยอัตโนมัติด้วยการสร้างการส่งมอบที่ปลอดภัยระหว่างต้นทางเก่าและใหม่

การย้ายข้อมูลเป็นกระบวนการยืนยันแบบ 2 ขั้นตอน โดยเว็บไซต์ใหม่จะอ้างสิทธิ์เว็บไซต์เก่าเป็นเว็บไซต์ก่อนหน้า และเว็บไซต์เก่าจะให้สิทธิ์เว็บไซต์ใหม่เป็นเว็บไซต์ที่รับช่วงต่อ

ข้อจำกัดที่สำคัญ

ขั้นตอนการติดตั้งใช้งาน

1. การยืนยันสถานะ "Same-Site"

บังคับ: ทั้งต้นทางใหม่และต้นทางเก่าต้องเป็น "Same-Site" โดยต้องใช้โดเมนที่จดทะเบียนได้ (eTLD+1) เดียวกัน

  • อนุญาต: การย้ายข้อมูลจาก app.example.com ไปยัง new.example.com (ทั้ง 2 รายการใช้ example.com ร่วมกัน)
  • อนุญาต: การย้ายข้อมูลจาก example.com/app1 ไปยัง example.com/app2
  • ไม่อนุญาต: การย้ายข้อมูลจาก example.com ไปยัง example.org (โดเมนที่จดทะเบียนได้ต่างกัน)

2. กำหนดค่าแอปพลิเคชันใหม่

แอปพลิเคชันใหม่ต้องประกาศแอปพลิเคชันก่อนหน้า แอปใหม่ต้องมี id

ใน manifest.json ของเว็บไซต์ใหม่ ให้เพิ่มช่อง migrate_from ดังนี้

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

3. ให้สิทธิ์การย้ายข้อมูลในต้นทางเดิม

ต้นทางเดิมต้องให้สิทธิ์การย้ายข้อมูลอย่างชัดเจนเพื่อป้องกันการลักลอบใช้ต้นทาง สร้างไฟล์การกำหนดค่าที่แสดงจากไดเรกทอรี .well-known

ตำแหน่งไฟล์: https://old-app.example.com/.well-known/web-app-origin-association

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

4. ส่งสัญญาณการย้ายข้อมูลในเชิงรุก (ไม่บังคับ)

หากต้องการทริกเกอร์การย้ายข้อมูลทันทีสำหรับผู้ใช้เดิมโดยไม่ต้องรอให้ผู้ใช้เข้าชม Sites แบบใหม่ ให้อัปเดตไฟล์ Manifest ของเว็บไซต์เก่าด้วยคำแนะนำ migrate_to

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

5. กำหนดให้ผู้ใช้ย้ายข้อมูล (ไม่บังคับ)

โดยค่าเริ่มต้น ระบบจะแนะนำให้ผู้ใช้ย้ายข้อมูล หากต้องการบังคับให้เปลี่ยน ให้ตั้งค่า behavior เป็น force ในไฟล์ Manifest ของแอปใหม่

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

หมายเหตุ: behavior: "force" จะไม่ลบแอปเก่าโดยไม่แจ้งให้ทราบ เบราว์เซอร์จะแสดงกล่องโต้ตอบที่กำหนดให้ผู้ใช้อัปเดตเป็นเวอร์ชันใหม่หรือนำแอปออกทั้งหมด

การสำรองและการรองรับเบราว์เซอร์

ข้อความแจ้งให้ติดตั้งอีกครั้งด้วยตนเอง

สำหรับเบราว์เซอร์ที่ไม่รองรับการย้ายข้อมูลอัตโนมัติ ผู้ใช้จะยังคงใช้การติดตั้งเดิมต่อไป คุณควรใช้องค์ประกอบ UI (เช่น แบนเนอร์การแจ้งเตือน) ในต้นทางเดิมที่นำผู้ใช้ไปยัง Sites แบบใหม่

ระบบจะไม่ย้ายข้อมูลการตั้งค่าของผู้ใช้ และจะไม่ถอนการติดตั้งแอปเก่าโดยอัตโนมัติ