ควบคุมวิธีเปิดแอปของคุณ
Launcher 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 ได้ในการสาธิต Launcher Handler ของ PWA อย่าลืมตรวจสอบซอร์สโค้ดของแอปพลิเคชันเพื่อดูว่าแอปใช้ Launcher 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 เปิดและเล่นแทร็กนั้นอย่างไร
- คลิกลิงก์ในแอปแชทอีกครั้งและสังเกตเห็นว่าคุณจะไม่ได้รับอินสแตนซ์ที่สองของ Musicr 2.0
ความคิดเห็น
ทีม Chromium ต้องการทราบประสบการณ์ของคุณเกี่ยวกับ Launch Handler API
บอกเราเกี่ยวกับการออกแบบ API
มีบางอย่างเกี่ยวกับ API ที่ทำงานไม่ได้ตามที่คาดหวังหรือไม่ หรือยังไม่มีวิธีการหรือคุณสมบัติ ที่คุณต้องใช้เพื่อนำไอเดียของคุณไปปฏิบัติ หากมีข้อสงสัยหรือความคิดเห็น เกี่ยวกับรูปแบบการรักษาความปลอดภัย แจ้งปัญหาเกี่ยวกับที่เก็บ GitHub ที่เกี่ยวข้อง หรือเพิ่มความคิดเห็นของคุณเกี่ยวกับปัญหาที่มีอยู่
รายงานปัญหาเกี่ยวกับการติดตั้งใช้งาน
คุณพบข้อบกพร่องในการใช้งาน Chromium ไหม หรือการติดตั้งใช้งานแตกต่างจากข้อกําหนดหรือไม่
รายงานข้อบกพร่องที่ new.crbug.com ตรวจสอบว่าได้ใส่รายละเอียดให้มากที่สุดเท่าที่จะเป็นไปได้ วิธีการง่ายๆ ในการสร้างอีกครั้ง และป้อน Blink>AppManifest
ในช่องคอมโพเนนต์
ภาพ Glitch เหมาะสำหรับการแชร์ซ้ำที่ง่ายและรวดเร็ว
แสดงการรองรับ API
คุณวางแผนที่จะใช้ Launch Handler API ไหม การสนับสนุนแบบสาธารณะของคุณช่วยให้ทีม Chromium สามารถจัดลำดับความสำคัญของฟีเจอร์ต่างๆ และแสดงให้ผู้ให้บริการเบราว์เซอร์รายอื่นเห็นว่าการสนับสนุนฟีเจอร์เหล่านี้นั้นสำคัญเพียงใด
ส่งทวีตไปที่ @ChromiumDev โดยใช้แฮชแท็ก
#LaunchHandler
และ
แจ้งให้เราทราบว่าคุณใช้งานที่ไหนและอย่างไร