ควบคุมวิธีเปิดแอปของคุณ
Launch Handler API ช่วยให้คุณควบคุมวิธีเปิดแอปได้ เช่น จะใช้หน้าต่างที่มีอยู่หรือหน้าต่างใหม่ และระบบจะไปยัง URL การเปิดหรือไม่ เช่นเดียวกับ File Handing API การดำเนินการนี้จะจัดคิวออบเจ็กต์ LaunchParams
ใน window.launchQueue
ของหน้าที่เปิด
สถานะปัจจุบัน
ขั้นตอน | สถานะ |
---|---|
1. สร้างคำอธิบาย | เสร็จสมบูรณ์ |
2. สร้างข้อกำหนดคร่าวๆ เบื้องต้น | เสร็จสมบูรณ์ |
3. รวบรวมความคิดเห็นและปรับปรุงการออกแบบ | เสร็จสมบูรณ์ |
4. ช่วงทดลองใช้จากต้นทาง | เสร็จสมบูรณ์ |
5. เปิดตัว | เสร็จสมบูรณ์ |
ใช้ Launch Handler API
การสนับสนุนเบราว์เซอร์
อินเทอร์เฟซ
Launch Handler API จะกำหนดอินเทอร์เฟซใหม่ 2 รายการ
LaunchParams
: ออบเจ็กต์ที่มี targetURL
ซึ่งผู้บริโภคจะเป็นผู้จัดการ
LaunchQueue
: คิวจะเปิดขึ้นจนกว่าผู้บริโภคที่ระบุจะจัดการคิว
สมาชิกไฟล์ Manifest ของ launch_handler
หากต้องการระบุลักษณะการเปิดใช้งานของแอปอย่างชัดเจน ให้เพิ่มสมาชิกไฟล์ Manifest launch_handler
ในไฟล์ Manifest และมีฟิลด์ย่อย 1 ฟิลด์ชื่อ client_mode
ซึ่งช่วยให้คุณควบคุมได้ว่าควรเปิดใช้งานไคลเอ็นต์ใหม่หรือไคลเอ็นต์ที่มีอยู่ และควรไปยังส่วนต่างๆ ของไคลเอ็นต์นี้หรือไม่ ตัวอย่างต่อไปนี้แสดงไฟล์ที่มีค่าตัวอย่างที่จะกำหนดเส้นทางการเปิดตัวทั้งหมดไปยังไคลเอ็นต์ใหม่เสมอ
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
หากไม่ระบุ launch_handler
จะมีค่าเริ่มต้นเป็น {"client_mode": "auto"}
ค่าที่ใช้ได้สำหรับช่องย่อยมีดังนี้
client_mode
:navigate-new
: ระบบจะสร้างบริบทการท่องเว็บใหม่ในหน้าต่างเว็บแอปเพื่อโหลด URL เป้าหมายของการเปิดnavigate-existing
: การโต้ตอบล่าสุดกับบริบทการท่องเว็บในเว็บแอป ไปยัง URL เป้าหมายของการเปิดตัวfocus-existing
: เลือกบริบทการท่องเว็บที่มีการโต้ตอบล่าสุดในหน้าต่างเว็บแอปเพื่อจัดการการเปิดตัว ระบบจะจัดคิวออบเจ็กต์LaunchParams
ใหม่ที่มีการตั้งค่าtargetURL
เป็น URL ของการเปิดใช้งานในwindow.launchQueue
ของเอกสารauto
: ลักษณะการทํางานขึ้นอยู่กับ User Agent ที่จะเลือกวิธีที่ดีที่สุดสําหรับแพลตฟอร์ม สำหรับ ตัวอย่างเช่น อุปกรณ์เคลื่อนที่รองรับเฉพาะไคลเอ็นต์เดียว และจะใช้existing-client
อุปกรณ์เดสก์ท็อปรองรับหลายหน้าต่างและจะใช้navigate-new
เพื่อป้องกันไม่ให้ข้อมูลสูญหาย
พร็อพเพอร์ตี้ client_mode
ยังยอมรับรายการ (อาร์เรย์) ของค่า โดยค่าแรกที่ถูกต้องจะเป็น
ตัวเลือกนี้มีไว้เพื่อให้เพิ่มค่าใหม่ลงในข้อกำหนดโดยไม่รบกวนความเข้ากันได้แบบย้อนหลัง
กับการติดตั้งใช้งานที่มีอยู่เดิม
ตัวอย่างเช่น หากมีการเพิ่มค่าสมมติ "focus-matching-url"
เว็บไซต์จะระบุ
"client_mode": ["focus-matching-url", "navigate-existing"]
เพื่อควบคุมต่อไป
ลักษณะการทำงานของเบราว์เซอร์รุ่นเก่าที่ไม่รองรับ "focus-matching-url"
ใช้ window.launchQueue
ในโค้ดต่อไปนี้ ฟังก์ชัน extractSongID()
จะดึงข้อมูล songID
จาก URL
เมื่อเปิดตัว ใช้เล่นเพลงใน PWA ของโปรแกรมเล่นเพลง
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
สาธิต
คุณดูการสาธิตการทำงานของ Launch Handler API ได้ในการสาธิต Launch Handler ของ PWA อย่าลืมดู ซอร์สโค้ดของแอปพลิเคชันเพื่อดูว่าแอปพลิเคชันนี้ใช้ เปิด Handler API
- ติดตั้งแอป Musicr 2.0
- ส่งลิงก์ให้คุณเองในแอปพลิเคชันแชทของแบบฟอร์ม
https://launch-handler.glitch.me?track=https://example.com/music.mp3
(คุณสามารถปรับแต่งhttps://example.com/music.mp3
สำหรับ URL ที่ชี้ไปยังไฟล์เสียง เช่นhttps://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
) - คลิกลิงก์ในแอปแชทและดูว่า Musicr 2.0 เปิดและเล่นแทร็กอย่างไร
- คลิกลิงก์ในแอปแชทอีกครั้ง แล้วสังเกตว่าคุณจะไม่ได้รับอินสแตนซ์ที่ 2 Musicr 2.0
ความคิดเห็น
ทีม Chromium อยากทราบความคิดเห็นของคุณเกี่ยวกับประสบการณ์การใช้งาน Launch Handler API
บอกเราเกี่ยวกับการออกแบบ API
มีบางอย่างเกี่ยวกับ API ที่ทำงานไม่ได้ตามที่คาดหวังหรือไม่ หรือมีเมธอดหรือพร็อพเพอร์ตี้ที่ขาดหายไปซึ่งคุณต้องนำไปใช้กับแนวคิดของคุณ หากมีคำถามหรือความคิดเห็นเกี่ยวกับรูปแบบการรักษาความปลอดภัย แจ้งปัญหาเกี่ยวกับข้อกำหนดใน GitHub repo ที่เกี่ยวข้อง หรือแสดงความคิดเห็นในปัญหาที่มีอยู่
รายงานปัญหาเกี่ยวกับการติดตั้งใช้งาน
หากพบข้อบกพร่องในการใช้งาน Chromium หรือการติดตั้งใช้งานแตกต่างจากข้อกําหนดหรือไม่
รายงานข้อบกพร่องที่ new.crbug.com อย่าลืมใส่รายละเอียดให้มากที่สุด
วิธีการทำซ้ำ และป้อน Blink>AppManifest
ในช่องคอมโพเนนต์
Glitch เหมาะอย่างยิ่งสำหรับการแชร์การจำลองอย่างรวดเร็ว
แสดงการสนับสนุน API
คุณวางแผนที่จะใช้ Launch Handler API ไหม การสนับสนุนแบบสาธารณะของคุณจะช่วยให้ทีม Chromium จัดลําดับความสําคัญของฟีเจอร์ต่างๆ และแสดงให้เห็นว่าการสนับสนุนฟีเจอร์เหล่านี้สำคัญเพียงใดต่อผู้ให้บริการเบราว์เซอร์รายอื่นๆ
ส่งทวีตไปยัง @ChromiumDev โดยใช้แฮชแท็ก
#LaunchHandler
และ
โปรดแจ้งให้เราทราบว่าคุณใช้ผลิตภัณฑ์นี้ที่ใดและอย่างไร