Khởi chạy API trình xử lý

Kiểm soát cách khởi chạy ứng dụng.

Launch Handler API cho phép bạn kiểm soát cách ứng dụng của bạn được khởi chạy, ví dụ: liệu ứng dụng có sử dụng cửa sổ hiện có hay cửa sổ mới và liệu cửa sổ đã chọn có chuyển đến URL khởi chạy hay không. Tương tự như File Handling API, API này cũng xếp hàng một đối tượng LaunchParams trong window.launchQueue của trang được khởi chạy.

Trạng thái hiện tại

Bước Trạng thái
1. Tạo video giải thích Hoàn tất
2. Tạo bản nháp ban đầu của quy cách Hoàn tất
3. Thu thập ý kiến phản hồi và lặp lại quy trình thiết kế Hoàn chỉnh
4. Bản dùng thử theo nguyên gốc. Hoàn chỉnh
5. Ra mắt Hoàn tất

Sử dụng Launch Handler API

Hỗ trợ trình duyệt

Giao diện

Launch Handler API xác định 2 giao diện mới.

LaunchParams : Một đối tượng chứa targetURL mà người dùng sẽ xử lý. LaunchQueue : Đưa các lần khởi chạy vào hàng đợi cho đến khi được người dùng chỉ định xử lý.

Thành viên tệp kê khai launch_handler

Để chỉ định một cách khai báo hành vi khởi chạy của ứng dụng, hãy thêm thành phần kê khai launch_handler vào tệp kê khai. Tệp này có một trường con tên là client_mode. Bạn có thể kiểm soát việc có chạy một ứng dụng mới hay ứng dụng hiện có và liệu ứng dụng này có được điều hướng hay không. Ví dụ sau đây cho thấy một tệp có các giá trị mẫu sẽ luôn định tuyến tất cả các lần khởi chạy đến một ứng dụng mới.

{   "launch_handler": {     "client_mode": "navigate-new"   } } 

Nếu bạn không chỉ định, launch_handler sẽ mặc định là {"client_mode": "auto"}. Các giá trị được phép cho các trường phụ là:

  • client_mode:
    • navigate-new: Một bối cảnh duyệt web mới được tạo trong cửa sổ ứng dụng web để tải URL đích của lượt khởi chạy.
    • navigate-existing: Bối cảnh duyệt web mà người dùng tương tác gần đây nhất trong cửa sổ ứng dụng web sẽ chuyển đến URL mục tiêu của lượt khởi chạy.
    • focus-existing: Bối cảnh duyệt web được tương tác gần đây nhất trong cửa sổ ứng dụng web sẽ được chọn để xử lý việc khởi chạy. Một đối tượng LaunchParams mới có targetURL được đặt thành URL khởi chạy sẽ được xếp hàng đợi trong window.launchQueue của tài liệu.
    • auto: Tác nhân người dùng sẽ quyết định hành vi nào phù hợp nhất với nền tảng. Ví dụ: thiết bị di động chỉ hỗ trợ một ứng dụng và sẽ dùng existing-client, trong khi thiết bị máy tính hỗ trợ nhiều cửa sổ và sẽ dùng navigate-new để tránh mất dữ liệu.

Thuộc tính client_mode cũng chấp nhận một danh sách (mảng) các giá trị, trong đó giá trị hợp lệ đầu tiên sẽ được dùng. Điều này nhằm cho phép thêm các giá trị mới vào thông số kỹ thuật mà không làm ảnh hưởng đến khả năng tương thích ngược với các phương thức triển khai hiện có.

Ví dụ: nếu giá trị giả định "focus-matching-url" được thêm vào, các trang web sẽ chỉ định "client_mode": ["focus-matching-url", "navigate-existing"] để tiếp tục kiểm soát hành vi của những trình duyệt cũ không hỗ trợ "focus-matching-url".

Sử dụng window.launchQueue

Trong đoạn mã sau, hàm extractSongID() trích xuất một songID từ URL được truyền khi khởi chạy. Tham số này được dùng để phát một bài hát trong PWA của trình phát nhạc.

if ('launchQueue' in window) {   launchQueue.setConsumer((launchParams) => {     if (launchParams.targetURL) {       const songID = extractSongId(launchParams.targetURL);       if (songID) {         playSong(songID);       }     }   }); } 

Bản minh hoạ

Bạn có thể xem bản minh hoạ về Launch Handler API đang hoạt động trong PWA Launch Handler Demo. Đừng quên xem mã nguồn của ứng dụng để biết cách ứng dụng sử dụng Launch Handler API.

  1. Cài đặt ứng dụng Musicr 2.0.
  2. Gửi cho chính mình một đường liên kết đến biểu mẫu trong ứng dụng trò chuyện https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3. (Bạn có thể tuỳ chỉnh https://example.com/music.mp3 cho mọi URL trỏ đến một tệp âm thanh, ví dụ: https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav).
  3. Nhấp vào đường liên kết trong ứng dụng nhắn tin của bạn và xem cách Musicr 2.0 mở và phát bản nhạc.
  4. Nhấp lại vào đường liên kết trong ứng dụng trò chuyện và bạn sẽ thấy rằng bạn không nhận được phiên bản thứ hai của Musicr 2.0.

Phản hồi

Nhóm Chromium muốn biết ý kiến của bạn về Launch Handler API.

Hãy cho chúng tôi biết về thiết kế API

Có điều gì về API không hoạt động như bạn mong đợi không? Hoặc có phương thức hay thuộc tính nào bị thiếu mà bạn cần triển khai ý tưởng của mình không? Bạn có câu hỏi hoặc bình luận về mô hình bảo mật? Báo cáo vấn đề về quy cách trên kho lưu trữ GitHub tương ứng hoặc thêm ý kiến của bạn vào một vấn đề hiện có.

Báo cáo vấn đề về việc triển khai

Bạn có phát hiện thấy lỗi trong quá trình triển khai Chromium không? Hoặc việc triển khai có khác với quy cách không? Báo cáo lỗi tại new.crbug.com. Hãy nhớ cung cấp càng nhiều thông tin chi tiết càng tốt, hướng dẫn tái tạo và nhập Blink>AppManifest vào hộp Components (Thành phần).

Thể hiện sự ủng hộ đối với API

Bạn có dự định sử dụng Launch Handler API không? Sự ủng hộ công khai của bạn giúp nhóm Chromium ưu tiên các tính năng và cho các nhà cung cấp trình duyệt khác thấy tầm quan trọng của việc hỗ trợ các tính năng đó.

Gửi một tweet đến @ChromiumDev bằng thẻ bắt đầu bằng #LaunchHandler và cho chúng tôi biết bạn đang sử dụng tính năng này ở đâu và như thế nào.

Đường liên kết hữu ích