ส่วนขยายขอบเขตของเว็บแอป

ตั้งแต่ Chrome 122 เป็นต้นไป คุณสามารถสมัครทดลองใช้เวอร์ชันที่มาพร้อมแหล่งที่มาสำหรับscope_extensions สมาชิกไฟล์ Manifest ของแอป ซึ่งช่วยให้เว็บไซต์ที่ควบคุมโดเมนย่อยและโดเมนระดับบนสุดหลายรายการแสดงเป็นเว็บแอปเดียวได้ เอกสารนี้อธิบายเหตุผลที่ทีม Chrome เปิดตัวฟีเจอร์นี้และกรณีที่คุณอาจต้องการใช้

ภาพรวม

เว็บแอปพลิเคชันบางรายการมีต้นทางหลายรายการ เช่น example.com เป็นแอปหลัก จากนั้นเป็น space_1.example.com, …, space_n.example.com ซึ่งบางครั้งจะรวมกับ special-example.com เป็นประสบการณ์ย่อยทั้งหมดอยู่ภายใต้แอปหลัก สถาปัตยกรรมเว็บไซต์ประเภทนี้ส่งผลต่อบริบทของ Progressive Web App ข้อจํากัดรวมถึงการแชร์ Service Worker, อุปกรณ์ทุกประเภท, พื้นที่เก็บข้อมูลในเครื่อง และสิทธิ์ในต้นทางต่างๆ ไม่ได้ นอกจากนี้ การนำทางข้ามแหล่งที่มาใน PWA แบบสแตนด์อโลนจะแสดง UI ของหน้าต่าง ("แถบ "ไม่อยู่ในขอบเขต") ซึ่งบ่งบอกว่าผู้ใช้ออกจากประสบการณ์การใช้งาน PWA แล้ว คุณดูวิธีแก้ปัญหาเหล่านี้ได้บางส่วนในบทความProgressive Web App ในเว็บไซต์หลายแหล่งที่มาและการสร้าง Progressive Web App หลายรายการในโดเมนเดียวกัน

Scope Extensions API ช่วยให้เว็บแอปสามารถเอาชนะปัญหาบางอย่างที่นโยบายต้นทางเดียวกันกำหนดไว้สำหรับสถาปัตยกรรมเว็บไซต์ประเภทนี้ ซึ่งช่วยให้เว็บแอปขยายขอบเขตไปยังต้นทางอื่นๆ ได้เพื่อช่วยมอบประสบการณ์การใช้งานแบบรวม โดยอิงตามข้อตกลงระหว่างต้นทางหลักของเว็บแอปกับต้นทางที่เกี่ยวข้อง

เป้าหมาย

เป้าหมายหลักของ Scope Extensions API คืออนุญาตให้เว็บไซต์ที่ควบคุมโดเมนย่อยและโดเมนระดับบนสุดหลายรายการทํางานเป็นเว็บแอปที่ต่อเนื่องกันเว็บเดียวเมื่อพูดถึง UI ของเว็บแอปและการจับลิงก์ เช่น อนุญาตให้เว็บไซต์ example.com ที่ครอบคลุม example.com.co.uk และ support.example.com ทํางานเป็นเว็บแอปพลิเคชันเดียวมากที่สุด

แผนภาพที่แสดง PWA หลักและประสบการณ์ย่อยที่เกี่ยวข้อง

ส่วนขยายขอบเขตช่วยให้ PWA หลายแหล่งที่มาทํางานเป็นเว็บแอปที่ต่อเนื่องกันเมื่อพูดถึง UI ของเว็บแอป

ในทางปฏิบัติ เป้าหมายนี้หมายถึงเป้าหมายที่เฉพาะเจาะจงมากขึ้น 2 ประการ ได้แก่

  • การนำทางข้ามต้นทาง: ช่วยให้ผู้ใช้ไปยังต้นทางที่เกี่ยวข้องได้โดยไม่รบกวนประสบการณ์ของผู้ใช้ด้วยการเรียกใช้ UI หน้าต่างเพื่อแจ้งให้ผู้ใช้ทราบว่ากำลังจะออกจาก PWA
  • การบันทึกลิงก์ข้ามแหล่งที่มา: อนุญาตให้เว็บแอปบันทึกการไปยังส่วนต่างๆ ของผู้ใช้ไปยังเว็บไซต์ที่เชื่อมโยง

การนำทางในขอบเขตแบบข้ามแหล่งที่มา

โดยค่าเริ่มต้น เมื่อผู้ใช้ไปยังต้นทางต่างๆ ใน PWA แบบสแตนด์อโลน ระบบจะแสดง UI ของหน้าต่างที่ระบุว่าผู้ใช้กำลังออกจากประสบการณ์การใช้งาน PWA UI ใน Chrome นี้ประกอบด้วยแถบ "อยู่นอกขอบเขต" ที่มี URL ของต้นทางใหม่ ซึ่งจะรบกวนประสบการณ์ของผู้ใช้ เนื่องจากผู้ใช้คาดหวังว่าจะไปยังส่วนต่างๆ ภายในบริบทของแอปพลิเคชันเดียวกันได้ต่อไป แต่อาจรู้สึกว่าระบบนําตนออกจากบริบทนั้น

แถบนอกขอบเขตที่ด้านบนของ PWA แบบสแตนด์อโลน

แถบ "อยู่นอกขอบเขต" ที่แสดงใน Chrome เมื่อผู้ใช้ไปยังต้นทางต่างๆ ใน PWA แบบสแตนด์อโลน

เมื่อใช้ส่วนขยายขอบเขต UI ของหน้าต่างจะไม่แสดงเมื่อผู้ใช้ไปยังต้นทางที่เชื่อมโยง เพื่อให้ PWA แสดงเป็นประสบการณ์การใช้งานแบบรวม

การจับลิงก์หมายถึงความสามารถของแอปในการจับลิงก์ภายในขอบเขต วิธีการนําไปใช้จะแตกต่างกันไปตามเบราว์เซอร์และระบบปฏิบัติการ ตัวอย่างเช่น ใน Chrome บน ChromeOS ลิงก์ในขอบเขตของ PWA ที่ติดตั้งไว้จะเปิดแท็บเบราว์เซอร์โดยมีตัวบ่งชี้ในแถบที่อยู่ว่ามีแอปที่สามารถจัดการลิงก์เหล่านี้ได้ ซึ่งช่วยให้ผู้ใช้เลือกใช้การบันทึกลิงก์โดยอัตโนมัติจากจุดนั้นได้

ข้อความแจ้งของแถบอเนกประสงค์สำหรับ PWA ที่ติดตั้งไว้

ส่วนย่อยของแถบที่อยู่ Chrome ของแท็บใน ChromeOS ที่แสดงสัญญาณบอกสถานะว่า PWA จัดการลิงก์ได้และตัวเลือกในการจดจำการตัดสินใจนั้น

หากผู้ใช้คลิกลิงก์ที่อยู่นอกขอบเขตของ PWA (รวมถึงลิงก์ไปยังโดเมนย่อยหรือโดเมนระดับบนสุด) ระบบจะไม่ถือว่าผู้ใช้รายนั้นอยู่ใน PWA เช่น ลิงก์จะเปิดในแท็บเบราว์เซอร์โดยไม่มีการบ่งชี้ให้ผู้ใช้ทราบว่ามีแอปที่จัดการลิงก์ได้ Scope Extension API ช่วยขยายขอบเขตของ PWA เพื่อให้ระบบถือว่าต้นทางที่เชื่อมโยงเป็นลิงก์ที่อยู่ในขอบเขต

การใช้งาน

การใช้การขยายขอบเขตต้องสร้างความสัมพันธ์ระหว่างต้นทางหลักกับต้นทางที่เกี่ยวข้อง

ประกาศรายการต้นทางที่เกี่ยวข้อง

เพิ่มscope_extensions สมาชิกไฟล์ Manifest ของเว็บแอปไปยังต้นทาง PWA หลักเพื่อเปิดใช้เว็บแอปให้ขยายขอบเขตไปยังต้นทางอื่นๆ

ไฟล์ Manifest ของเว็บแอป (https://example.com)

{
  "name": "Example",
  "display": "standalone",
  "start_url": "/index.html",
  "scope_extensions": [
    { "origin": "https://*.example.com" },
    { "origin": "https://example.co.uk" },
    { "origin": "https://*.example.co.uk" }
  ]
}

ยืนยันการเชื่อมโยง

ต้นทางแต่ละรายการที่แสดงจะยืนยันการเชื่อมโยงกับเว็บแอปโดยใช้ไฟล์การกําหนดค่า /.well-known/web-app-origin-association ไฟล์นี้จำเป็นต้องตั้งชื่อว่า web-app-origin-association และแสดงผลที่ตำแหน่งที่แน่นอนนี้ เนื่องจากเป็น URI ที่รู้จักกันดี

/.well-known/web-app-origin-association (ต้นทางที่เชื่อมโยง)

{
  "web_apps": [{ "web_app_identity": "https://example.com" }]
}

สาธิต

การสาธิตประกอบด้วยเว็บไซต์ 2 แห่ง ได้แก่

หากต้องการทำการทดสอบต่อไปนี้ คุณต้องเปิดใช้ Flag about://flags/#enable-desktop-pwas-scope-extensions (ใช้ได้ใน Chrome เวอร์ชัน 115 ขึ้นไป)

ทดสอบการไปยังส่วนต่างๆ แบบข้ามแหล่งที่มา

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

หน้าต่าง PWA หลักที่มีลิงก์ภายในขอบเขตและลิงก์ขอบเขตที่ขยาย

PWA สาธิตที่มีลิงก์ไปยังต้นทางในขอบเขตที่ขยายและต้นทางที่ไม่ได้อยู่ในขอบเขตที่ขยาย

การนำทางข้ามแหล่งที่มาเริ่มต้น (ไม่ได้อยู่ในขอบเขตที่ขยาย)

  1. คลิกลิงก์ไปยังต้นทางที่ไม่ได้อยู่ในขอบเขตแบบขยายภายใน PWA แบบเต็มหน้าจอ
  2. ด้วยเหตุนี้ การนำทางจึงเกิดขึ้นและแถบ "อยู่นอกขอบเขต" จะแสดงขึ้น

หน้าต่าง PWA หลักที่มีแถบ "อยู่นอกขอบเขต" หลังจากคลิกลิงก์ "อยู่นอกขอบเขต"

แถบ "อยู่นอกขอบเขต" ที่แสดงโดยค่าเริ่มต้นสำหรับการไปยังส่วนต่างๆ ในหลายแหล่งที่มาของ PWA ในโหมดสแตนด์อโลน

การนําทางข้ามแหล่งที่มาด้วยส่วนขยายขอบเขต (ในขอบเขตที่ขยาย)

  1. กลับไปที่หน้าแรกของ PWA
  2. คลิกลิงก์ไปยัง ต้นทางที่ไม่ได้อยู่ในขอบเขตแบบขยาย
  3. โดยค่าเริ่มต้น แถบ "อยู่นอกขอบเขต" ควรแสดง แต่จะไม่แสดงเนื่องจากมีการเชื่อมโยงขอบเขตกับส่วนขยาย

หน้าต่าง PWA หลักที่ไม่มีแถบ "อยู่นอกขอบเขต" หลังจากคลิกลิงก์ขอบเขตที่ขยาย

แถบ "อยู่นอกขอบเขต" ไม่แสดงในการนำทางแบบข้ามต้นทางหลังจากที่เชื่อมโยงกับต้นทางด้วยส่วนขยายขอบเขต

  1. เปิดและติดตั้ง PWA หลักในอุปกรณ์ ChromeOS
  2. คลิกลิงก์ต่อไปนี้ ต้นทางที่เชื่อมโยง
  3. ลิงก์จะเปิดในแท็บเบราว์เซอร์ใหม่และระบบจะแสดงข้อความแจ้งให้เปิดลิงก์ใน PWA ที่ติดตั้งไว้

ข้อความแจ้งของแถบอเนกประสงค์สำหรับ PWA ที่ติดตั้งซึ่งมีขอบเขตแบบขยาย

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

ช่วงทดลองใช้จากต้นทาง

หากต้องการทดสอบ API นี้ในแอปพลิเคชันของคุณในสนามกับผู้ใช้จริง คุณก็ทําได้โดยใช้ช่วงทดลองใช้ต้นทาง การทดลองใช้เวอร์ชันทดลองช่วยให้คุณลองใช้ฟีเจอร์ทดลองกับผู้ใช้ได้โดยรับโทเค็นการทดสอบที่เชื่อมโยงกับโดเมนของคุณ จากนั้นคุณก็สามารถทําให้แอปใช้งานได้ในเบราว์เซอร์ที่รองรับฟีเจอร์ที่คุณทดสอบ (ในกรณีนี้ ฟีเจอร์ดังกล่าวพร้อมใช้งานใน Chrome ตั้งแต่เวอร์ชัน 121 ถึง 126) หากต้องการรับโทเค็นของคุณเองเพื่อใช้ทดลองใช้เวอร์ชันที่เป็นต้นทาง ให้กรอกแบบฟอร์มการสมัคร

ความคิดเห็น

ทีม Chrome ต้องการความคิดเห็นเกี่ยวกับความมีประโยชน์ของ API นี้ หากต้องการช่วยทีมพัฒนา API นี้ด้วยความคิดเห็นเกี่ยวกับประโยชน์ของ API และกรณีการใช้งานใหม่ๆ ที่ไม่ได้ครอบคลุมในเวอร์ชันปัจจุบัน ให้เปิดปัญหาใน GitHub

แหล่งข้อมูลเพิ่มเติม

ขอขอบคุณ

ขอขอบคุณเป็นพิเศษสําหรับทีมที่พัฒนา API นี้ Alan Cutter และ Lu Huang เป็นผู้ระบุส่วนขยายขอบเขต โดยได้รับข้อมูลจาก Matt Giuca API นี้ติดตั้งใช้งานโดย Alan Cutter จาก Google Chrome และ Hassan Talat, Kristin Lee และ Lu Huang จาก Microsoft Edge