Kiểm soát cách ứng dụng của bạn được khởi chạy.
Launch Handler API (API Trình xử lý khởi chạy) cho phép bạn kiểm soát cách khởi chạy ứng dụng, chẳng hạn như 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ó được chuyển đến URL khởi chạy hay không. Cũng giống như API Xử lý tệp, API này cũng đưa đối tượng LaunchParams
vào hàng đợi trong window.launchQueue
của trang đã 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 thiết kế | Hoàn chỉnh |
4. Bản dùng thử theo nguyên gốc. | Hoàn chỉnh |
5. Khởi chạy | Hoàn tất |
Sử dụng Launch Handler API (API Trình xử lý khởi chạy)
Hỗ trợ trình duyệt
Giao diện
Launch Handler API (API Trình xử lý khởi chạy) xác định hai giao diện mới.
LaunchParams
: Một đối tượng chứa targetURL
do người dùng xử lý.
LaunchQueue
: Hàng đợi khởi chạy cho đến khi được người dùng đã chỉ định xử lý.
Thành phần tệp kê khai launch_handler
Để chỉ định rõ hành vi khởi chạy của ứng dụng, hãy thêm thành phần tệp kê khai launch_handler
vào tệp kê khai. Trường này có một trường con tên là client_mode
. Thuộc tính này cho phép bạn kiểm soát việc có khởi chạy ứng dụng mới hay ứng dụng hiện có và có điều hướng ứng dụng này 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 không được chỉ định, launch_handler
sẽ mặc định là {"client_mode": "auto"}
. Các giá trị được phép cho trường phụ là:
client_mode
:navigate-new
: Một ngữ cảnh duyệt web mới được tạo trong cửa sổ ứng dụng web để tải URL mục tiêu của lần chạy.navigate-existing
: Ngữ 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 chuyển đến URL mục tiêu của lần chạy.focus-existing
: Ngữ cảnh duyệt web được tương tác gần đây nhất trong cửa sổ ứng dụng web được chọn để xử lý quá trình khởi chạy. Một đối tượngLaunchParams
mới cótargetURL
được đặt thành URL chạy sẽ được đưa vào hàng đợi trongwindow.launchQueue
của tài liệu.auto
: Hành vi tuỳ thuộc vào tác nhân người dùng để quyết định hoạt động 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ẽ sử dụngexisting-client
, trong khi thiết bị máy tính hỗ trợ nhiều cửa sổ và sẽ sử dụngnavigate-new
để tránh mất dữ liệu.
Thuộc tính client_mode
cũng chấp nhận danh sách (mảng) các giá trị, trong đó giá trị hợp lệ đầu tiên sẽ được sử dụng. Điều này cho phép thêm các giá trị mới vào quy cách mà không phá vỡ 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 bạn thêm giá trị giả định "focus-matching-url"
, 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 các trình duyệt cũ không hỗ trợ "focus-matching-url"
.
Sử dụng window.launchQueue
Trong mã sau, hàm extractSongID()
trích xuất songID
từ URL được truyền khi khởi chạy. Thuộc tính này dùng để phát bài hát trong PWA 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ề cách hoạt động của Launch Handler API trong Bản minh hoạ về Trình xử lý khởi chạy PWA. Hãy nhớ xem mã nguồn của ứng dụng để xem cách ứng dụng sử dụng API Trình xử lý khởi chạy.
- Cài đặt ứng dụng Musicr 2.0.
- Gửi cho chính bạn một đường liên kết trong ứng dụng trò chuyện ở dạng
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (Bạn có thể tuỳ chỉnhhttps://example.com/music.mp3
cho bất kỳ URL nào trỏ đến tệp âm thanh, ví dụ:https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - Nhấp vào đường liên kết trong ứng dụng nhắn tin để xem cách Musicr 2.0 mở và phát bản nhạc.
- 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 sẽ không có phiên bản thứ hai của Musicr 2.0.
Phản hồi
Nhóm Chromium muốn biết trải nghiệm của bạn với Launch Handler API.
Giới thiệu cho chúng tôi về thiết kế API
API có hoạt động như mong đợi không? Hay có phương thức hoặc 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 nhận xét về mô hình bảo mật không? Báo cáo vấn đề về thông số kỹ thuật trên kho lưu trữ GitHub tương ứng hoặc thêm ý kiến của bạn về vấn đề hiện có.
Báo cáo vấn đề về việc triển khai
Bạn có phát hiện lỗi trong quá trình triển khai Chromium không? Hay cách triển khai có khác với thông số kỹ thuật không?
Gửi 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 cách tái hiện lỗi và nhập Blink>AppManifest
vào hộp Components (Thành phần).
Glitch rất hữu ích khi chia sẻ các bản trình bày nhanh.
Hỗ trợ API
Bạn có dự định sử dụng Launch Handler API (API Trình xử lý khởi chạy) 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 hashtag #LaunchHandler
và cho chúng tôi biết bạn đang sử dụng ở đâu và như thế nào.