ควบคุมวิธีเปิดแอป
Launch Handler API ทำให้คุณสามารถควบคุมวิธีเปิดแอปของคุณ เช่น แอปใช้หน้าต่างที่มีอยู่หรือหน้าต่างใหม่ และหน้าต่างที่เลือกมีการนำทางไปยัง URL การเปิดใช้หรือไม่ ซึ่งจะกำหนดคิวของออบเจ็กต์ LaunchParams
ใน window.launchQueue
ของหน้าที่เปิดตัวแล้ว เช่นเดียวกับ File Handing API
สถานะปัจจุบัน
ขั้นตอน | สถานะ |
---|---|
1. สร้างคำอธิบาย | เสร็จสมบูรณ์ |
2. สร้างฉบับร่างเริ่มต้นของข้อกำหนด | เสร็จสมบูรณ์ |
3. รวบรวมความคิดเห็นและทำซ้ำเกี่ยวกับการออกแบบ | เสร็จสมบูรณ์ |
4. ช่วงทดลองใช้จากต้นทาง | เสร็จสมบูรณ์ |
5. เปิดตัว | เสร็จสมบูรณ์ |
การใช้ Launch Handler API
การสนับสนุนเบราว์เซอร์
ตัวแฮนเดิลการเปิดใช้ใช้ได้ใน ChromeOS เท่านั้น
อินเทอร์เฟซ
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 ได้ในการสาธิต PWA Launch Handler อย่าลืมดูซอร์สโค้ดของแอปพลิเคชันเพื่อดูวิธีที่แอปพลิเคชันใช้ Launch Handler API
- ติดตั้งแอป Musicr 2.0 บนอุปกรณ์ ChromeOS
- ส่งลิงก์แบบฟอร์ม
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 ที่เกี่ยวข้อง หรือเพิ่มความเห็นของคุณเกี่ยวกับปัญหาที่มีอยู่
รายงานปัญหาเกี่ยวกับการติดตั้งใช้งาน
คุณพบข้อบกพร่องในการใช้งาน Chromium หรือไม่ หรือการใช้งานแตกต่างจากข้อกำหนดหรือไม่
รายงานข้อบกพร่องที่ new.crbug.com อย่าลืมใส่รายละเอียดให้มากที่สุดเท่าที่จะทำได้ วิธีการง่ายๆ ในการทำซ้ำ และป้อน Blink>AppManifest
ลงในช่องคอมโพเนนต์
Glitch เหมาะสำหรับการแชร์การทำซ้ำที่ง่ายและรวดเร็ว
แสดงการสนับสนุนสำหรับ API
คุณวางแผนที่จะใช้ Launch Handler API หรือไม่ การสนับสนุนแบบสาธารณะของคุณช่วยให้ทีม Chromium จัดลำดับความสำคัญของฟีเจอร์ต่างๆ และแสดงให้ผู้ให้บริการเบราว์เซอร์รายอื่นๆ เห็นว่าการสนับสนุนนั้นมีความสำคัญเพียงใด
ส่งทวีตถึง @ChromiumDev โดยใช้แฮชแท็ก #LaunchHandler
และแจ้งให้เราทราบว่าคุณใช้แฮชแท็กที่ใดและอย่างไร