เปิดใช้ Handler API

ควบคุมวิธีเปิดแอป

Launch Handler API ทำให้คุณสามารถควบคุมวิธีเปิดแอปของคุณ เช่น แอปใช้หน้าต่างที่มีอยู่หรือหน้าต่างใหม่ และหน้าต่างที่เลือกมีการนำทางไปยัง URL การเปิดใช้หรือไม่ ซึ่งจะกำหนดคิวของออบเจ็กต์ LaunchParams ใน window.launchQueue ของหน้าที่เปิดตัวแล้ว เช่นเดียวกับ File Handing API

สถานะปัจจุบัน

ขั้นตอน สถานะ
1. สร้างคำอธิบาย เสร็จสมบูรณ์
2. สร้างฉบับร่างเริ่มต้นของข้อกำหนด เสร็จสมบูรณ์
3. รวบรวมความคิดเห็นและทำซ้ำเกี่ยวกับการออกแบบ เสร็จสมบูรณ์
4. ช่วงทดลองใช้จากต้นทาง เสร็จสมบูรณ์
5. เปิดตัว เสร็จสมบูรณ์

การใช้ Launch Handler API

การสนับสนุนเบราว์เซอร์

ตัวแฮนเดิลการเปิดใช้ใช้ได้ใน ChromeOS เท่านั้น

การสนับสนุนเบราว์เซอร์

  • 110
  • 110
  • x
  • x

แหล่งที่มา

อินเทอร์เฟซ

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

  1. ติดตั้งแอป Musicr 2.0 บนอุปกรณ์ ChromeOS
  2. ส่งลิงก์แบบฟอร์ม 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)
  3. คลิกลิงก์ในแอปแชทและสังเกตวิธีที่ Musicr 2.0 เปิดและเล่นแทร็กนั้น
  4. คลิกลิงก์ในแอปแชทอีกครั้งและสังเกตว่าคุณจะไม่ได้รับอินสแตนซ์ที่ 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 และแจ้งให้เราทราบว่าคุณใช้แฮชแท็กที่ใดและอย่างไร

ลิงก์ที่มีประโยชน์