ให้ PWA ที่ติดตั้งจัดการ URL เพื่อประสบการณ์การใช้งานที่ผสานรวมมากขึ้น
PWA เป็นแฮนเดิล URL ได้อย่างไร
สมมติว่าคุณกำลังแชทกับเพื่อนโดยใช้แอปพลิเคชันการรับส่งข้อความทันที เช่น Messages ใน macOS และคุณกำลังพูดถึงเพลง ลองจินตนาการว่าคุณทั้งคู่ได้music.example.com
ติดตั้ง PWA ไว้แล้วในอุปกรณ์ หากต้องการแชร์แทร็กโปรดให้เพื่อนๆ ได้ฟัง คุณสามารถส่ง Deep Link อย่างเช่น https://music.example.com/rick-astley/never-gonna-give-you-up
ให้เพื่อนๆ ได้ เนื่องจากลิงก์นี้ค่อนข้างยาว นักพัฒนาแอปของ music.example.com
จึงอาจตัดสินใจเพิ่มลิงก์สั้นๆ เพิ่มเติมสำหรับแต่ละแทร็ก เช่น https://🎵.example.com/r-a/n-g-g-y-u
PWA ในฐานะตัวแฮนเดิล URL ช่วยให้แอปอย่าง music.example.com
ลงทะเบียนตัวเองเป็นตัวแฮนเดิล URL สำหรับ URL ที่ตรงกับรูปแบบ เช่น https://music.example.com
, https://*.music.example.com
หรือ https://🎵.example.com
เพื่อให้ลิงก์จากภายนอก PWA เช่น จากแอปพลิเคชันการรับส่งข้อความทันทีหรือโปรแกรมรับส่งอีเมล เปิดใน PWA ที่ติดตั้งไว้แทนในแท็บเบราว์เซอร์
PWA ในฐานะตัวแฮนเดิล URL ประกอบด้วยส่วนเพิ่มเติม 2 ส่วน ได้แก่
- สมาชิกไฟล์ Manifest ของเว็บแอป
"url_handlers"
- รูปแบบไฟล์
web-app-origin-association
สำหรับตรวจสอบการเชื่อมโยง URL ที่อยู่ในและนอกขอบเขต
กรณีการใช้งานที่แนะนำสำหรับ PWA ในฐานะตัวแฮนเดิล URL
ตัวอย่างเว็บไซต์ที่อาจใช้ API นี้ ได้แก่
- เว็บไซต์สตรีมมิงเพลงหรือวิดีโอเพื่อให้ลิงก์ติดตามหรือลิงก์เพลย์ลิสต์เปิดขึ้นในประสบการณ์การใช้งานโปรแกรมเล่นของแอป
- เว็บไซต์ข่าวหรือ RSS ที่ติดตามหรือติดตามอยู่จะเปิดในโหมดโปรแกรมอ่านของแอป
วิธีใช้ PWA เป็นตัวแฮนเดิล URL
การเปิดใช้ผ่าน about://flags
หากต้องการทดสอบ PWA ในฐานะตัวแฮนเดิล URL ในเครื่องโดยไม่มีโทเค็นทดลองใช้ต้นทาง ให้เปิดใช้ Flag #enable-desktop-pwas-url-handling
ใน about://flags
สมาชิกไฟล์ Manifest ของเว็บแอป "url_handlers"
หากต้องการเชื่อมโยง PWA ที่ติดตั้งไว้กับรูปแบบ URL คุณต้องระบุรูปแบบเหล่านี้ในไฟล์ Manifest ของเว็บแอป การดำเนินการนี้ดำเนินการโดยสมาชิก "url_handlers"
โดยรับอาร์เรย์ของออบเจ็กต์ที่มีพร็อพเพอร์ตี้ origin
ซึ่งเป็น string
ที่ต้องระบุซึ่งเป็นรูปแบบสำหรับการจับคู่ต้นทาง รูปแบบเหล่านี้อนุญาตให้มีคำนำหน้าไวลด์การ์ด (*
) เพื่อรวมโดเมนย่อยหลายรายการ (เช่น https://*.example.com
) เว็บแอปนี้สามารถจัดการ URL ที่ตรงกับต้นทางเหล่านี้ได้ ระบบจะถือว่ารูปแบบเป็น https://
เสมอ แต่ต้องระบุไว้อย่างชัดเจน
ข้อความที่ตัดตอนมาจากไฟล์ Manifest ของเว็บแอปด้านล่างแสดงวิธีที่ตัวอย่าง PWA ของเพลงจากย่อหน้าแนะนำตั้งค่านี้ รายการที่ 2 ที่มีไวลด์การ์ด ("https://*.music.example.com"
) ช่วยให้มั่นใจว่าแอปจะเปิดใช้งานสําหรับ https://www.music.example.com
หรือตัวอย่างอื่นๆ ที่เป็นไปได้ เช่น https://marketing-activity.music.example.com
ด้วย
{
"url_handlers": [
{
"origin": "https://music.example.com"
},
{
"origin": "https://*.music.example.com"
},
{
"origin": "https://🎵.example.com"
}
]
}
ไฟล์ web-app-origin-association
เนื่องจาก PWA อยู่ในต้นทาง (music.example.com
) ที่แตกต่างจาก URL บางรายการที่ต้องจัดการ (เช่น https://🎵.example.com
) แอปต้องยืนยันการเป็นเจ้าของแหล่งที่มาอื่นๆ เหล่านี้ ซึ่งจะเกิดขึ้นในไฟล์ web-app-origin-association
ที่โฮสต์อยู่ในต้นทางอื่นๆ
ไฟล์นี้ต้องมี JSON ที่ถูกต้อง โครงสร้างระดับบนสุดคือออบเจ็กต์ที่มีสมาชิกชื่อ "web_apps"
สมาชิกนี้เป็นอาร์เรย์ของออบเจ็กต์ และออบเจ็กต์แต่ละรายการแสดงถึงรายการสําหรับเว็บแอปที่ไม่ซ้ำกัน โดยแต่ละออบเจ็กต์ประกอบด้วยข้อมูลต่อไปนี้
ช่อง | คำอธิบาย | ประเภท | ค่าเริ่มต้น |
---|---|---|---|
"manifest" |
(ต้องระบุ) สตริง URL ของไฟล์ Manifest ของเว็บแอปของ PWA ที่เกี่ยวข้อง | string |
ไม่มี |
"details" |
(ไม่บังคับ) ออบเจ็กต์ที่มีอาร์เรย์ของรูปแบบ URL ที่รวมและไม่รวม | object |
ไม่มี |
ออบเจ็กต์ "details"
แต่ละรายการประกอบด้วยข้อมูลต่อไปนี้
ช่อง | คำอธิบาย | ประเภท | ค่าเริ่มต้น |
---|---|---|---|
"paths" |
(ไม่บังคับ) อาร์เรย์ของสตริงเส้นทางที่อนุญาต | string[] |
[] |
"exclude_paths" |
(ไม่บังคับ) อาร์เรย์ของสตริงเส้นทางที่ไม่อนุญาต | string[] |
[] |
ตัวอย่างไฟล์ web-app-origin-association
สำหรับ PWA ของเพลงจากด้านบนมีดังนี้ ไฟล์จะโฮสต์อยู่ในต้นทาง 🎵.example.com
และสร้างการเชื่อมโยงกับ PWA music.example.com
ซึ่งระบุโดย URL ไฟล์ Manifest ของเว็บแอป
{
"web_apps": [
{
"manifest": "https://music.example.com/manifest.json",
"details": {
"paths": ["/*"],
"exclude_paths": ["/internal/*"]
}
}
]
}
URL จะตรงกันเมื่อใด
PWA จะจับคู่ URL สำหรับจัดการในกรณีที่เป็นไปตามเงื่อนไขทั้ง 2 ข้อต่อไปนี้
- URL ตรงกับสตริงต้นทางรายการใดรายการหนึ่งใน
"url_handlers"
- เบราว์เซอร์สามารถตรวจสอบผ่านไฟล์
web-app-origin-association
ที่เกี่ยวข้องซึ่งแต่ละต้นทางยินยอมให้แอปนี้จัดการ URL ดังกล่าวได้
เกี่ยวกับการค้นพบไฟล์ web-app-origin-association
หากต้องการให้เบราว์เซอร์ค้นพบไฟล์ web-app-origin-association
นักพัฒนาแอปต้องวางไฟล์ web-app-origin-association
ในโฟลเดอร์ /.well-known/
ที่รูทของแอป โดยชื่อไฟล์ต้องเป็น web-app-origin-association
เท่านั้น
สาธิต
หากต้องการทดสอบ PWA ในฐานะตัวแฮนเดิล URL โปรดตั้งค่า Flag ของเบราว์เซอร์ตามที่ระบุไว้ข้างต้น จากนั้นติดตั้ง PWA ที่ https://mandymsft.github.io/pwa/ เมื่อดูไฟล์ Manifest ของเว็บแอป คุณจะเห็นว่ามันจัดการ URL ที่มีรูปแบบ https://mandymsft.github.io
และ https://luhuangmsft.github.io
เนื่องจากแอปใน mandymsft.github.io
มีต้นทาง (luhuangmsft.github.io
) ที่แตกต่างจาก PWA ดังนั้น PWA ใน mandymsft.github.io
จึงต้องพิสูจน์ความเป็นเจ้าของ ซึ่งทำได้ผ่านไฟล์ web-app-origin-association
ที่โฮสต์ที่ https://luhuangmsft.github.io/.well-known/web-app-origin-association
หากต้องการตรวจสอบว่าการตั้งค่าใช้งานได้จริง ให้ส่งข้อความทดสอบถึงตัวเองโดยใช้แอปรับส่งข้อความทันทีที่คุณเลือกหรืออีเมลที่ดูในโปรแกรมรับส่งอีเมลที่ไม่ใช่เว็บ เช่น Mail ใน macOS อีเมลหรือ SMS ควรมีลิงก์ https://mandymsft.github.io
หรือ https://luhuangmsft.github.io
ทั้ง 2 รายการควรเปิดใน PWA ที่ติดตั้งไว้
ความปลอดภัยและสิทธิ์
ทีม Chromium ได้ออกแบบและติดตั้งใช้งาน PWA ในฐานะตัวแฮนเดิล URL โดยใช้หลักการหลักที่ระบุไว้ในการควบคุมการเข้าถึงฟีเจอร์อันทรงประสิทธิภาพของแพลตฟอร์มเว็บ ซึ่งรวมถึงการควบคุมของผู้ใช้ ความโปร่งใส และลักษณะการใช้งานที่สะดวกสบาย
การควบคุมของผู้ใช้
หาก PWA ลงทะเบียนเป็นตัวแฮนเดิล URL สําหรับรูปแบบ URL หนึ่งๆ มากกว่า 1 รายการ ระบบจะแจ้งให้ผู้ใช้เลือก PWA ที่ต้องการใช้จัดการรูปแบบนั้น (หากมี) ข้อเสนอนี้ไม่ได้จัดการการนําทางที่เริ่มต้นในแท็บเบราว์เซอร์ แต่มุ่งเน้นที่การนําทางที่เริ่มต้นนอกเบราว์เซอร์
ความโปร่งใส
หากการตรวจสอบการเชื่อมโยงที่จำเป็นไม่สำเร็จในระหว่างการติดตั้ง PWA ด้วยเหตุผลใดก็ตาม เบราว์เซอร์จะไม่ลงทะเบียนแอปเป็นตัวแฮนเดิล URL ที่ใช้งานอยู่สำหรับ URL ที่ได้รับผลกระทบ ตัวแฮนเดิล URL อาจถูกนำไปใช้ลักลอบใช้การเข้าชมเว็บไซต์ได้หากติดตั้งใช้งานอย่างไม่เหมาะสม ด้วยเหตุนี้ กลไกการเชื่อมโยงแอปจึงเป็นส่วนสำคัญของรูปแบบนี้
แอปพลิเคชันเฉพาะแพลตฟอร์มสามารถใช้ API ของระบบปฏิบัติการเพื่อแสดงรายการแอปพลิเคชันที่ติดตั้งในระบบของผู้ใช้อยู่แล้ว เช่น แอปพลิเคชันใน Windows สามารถใช้ FindAppUriHandlersAsync
API เพื่อแจกแจงตัวแฮนเดิล URL หาก PWA ลงทะเบียนเป็นตัวแฮนเดิล URL ระดับระบบปฏิบัติการใน Windows แอปพลิเคชันอื่นๆ ก็จะเห็น PWA เหล่านั้น
การเก็บรักษาสิทธิ์
ต้นทางสามารถแก้ไขการเชื่อมโยงกับ PWA ได้ทุกเมื่อ เบราว์เซอร์จะพยายามตรวจสอบการเชื่อมโยงของเว็บแอปที่ติดตั้งอยู่อีกครั้งเป็นประจำ หากการลงทะเบียนตัวแฮนเดิล URL ตรวจสอบอีกครั้งไม่สำเร็จเนื่องจากข้อมูลการเชื่อมโยงมีการเปลี่ยนแปลงหรือไม่พร้อมใช้งานอีกต่อไป เบราว์เซอร์จะนำการลงทะเบียนออก
ความคิดเห็น
ทีม Chromium อยากทราบความคิดเห็นของคุณเกี่ยวกับประสบการณ์การใช้งาน PWA ในฐานะตัวแฮนเดิล URL
บอกเราเกี่ยวกับการออกแบบ API
มีสิ่งใดเกี่ยวกับ API ที่ไม่ทำงานตามที่คาดไว้ไหม หรือมีเมธอดหรือพร็อพเพอร์ตี้ที่ขาดหายไปซึ่งคุณต้องนำไปใช้กับแนวคิดของคุณ หากมีคำถามหรือความคิดเห็นเกี่ยวกับรูปแบบการรักษาความปลอดภัย แจ้งปัญหาเกี่ยวกับข้อกำหนดใน GitHub repo ที่เกี่ยวข้อง หรือแสดงความคิดเห็นในปัญหาที่มีอยู่
รายงานปัญหาเกี่ยวกับการติดตั้งใช้งาน
หากพบข้อบกพร่องในการใช้งาน Chromium หรือการติดตั้งใช้งานแตกต่างจากข้อมูลจำเพาะหรือไม่
ส่งข้อบกพร่องที่ new.crbug.com ตรวจสอบว่าได้ใส่รายละเอียดให้มากที่สุดเท่าที่จะเป็นไปได้ วิธีการง่ายๆ ในการสร้างอีกครั้ง และป้อน UI>Browser>WebAppInstalls
ในช่องคอมโพเนนต์ ภาพ Glitch เหมาะสำหรับการแชร์ซ้ำที่ง่ายและรวดเร็ว
แสดงการสนับสนุน API
คุณวางแผนที่จะใช้ PWA เป็นตัวแฮนเดิล URL ใช่ไหม การสนับสนุนแบบสาธารณะของคุณช่วยให้ทีม Chromium จัดลําดับความสําคัญของฟีเจอร์ต่างๆ และแสดงให้เห็นว่าการสนับสนุนฟีเจอร์เหล่านี้สำคัญกับผู้ให้บริการเบราว์เซอร์รายอื่นๆ เพียงใด
ส่งทวีตถึง @ChromiumDev โดยใช้แฮชแท็ก #URLHandlers
และบอกเราว่าคุณกำลังใช้ฟีเจอร์นี้ที่ไหนและอย่างไร
ลิงก์ที่มีประโยชน์
- คำอธิบายแบบสาธารณะ
- สาธิต | แหล่งที่มาของข้อมูลประชากร
- ข้อบกพร่องในการติดตาม Chromium
- รายการ ChromeStatus.com
- คอมโพเนนต์ Blink:
UI>Browser>WebAppInstalls
- การตรวจสอบแท็ก
- เอกสารประกอบของ Microsoft
ขอขอบคุณ
Lu Huang และ Mandy Chen จากทีม Microsoft Edge เป็นผู้ระบุ PWA ให้เป็นเครื่องจัดการ URL บทความนี้ผ่านการตรวจสอบโดย Joe Medley รูปภาพหลักโดย Bryson Hammer จาก Unsplash