โดยปกติแล้ว การโอนเว็บแอป (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 แบบใหม่
ระบบจะไม่ย้ายข้อมูลการตั้งค่าของผู้ใช้ และจะไม่ถอนการติดตั้งแอปเก่าโดยอัตโนมัติ