控管應用程式的啟動方式。
您可使用 Launch Handler API 控制應用程式的啟動方式,例如應用程式使用現有視窗或新的視窗,以及選擇的視窗是否會導向至啟動網址。與 File Handing API 一樣,這樣做也會在已啟動頁面的 window.launchQueue
中將 LaunchParams
物件排入佇列。
目前狀態
步驟 | 狀態 |
---|---|
1. 建立說明 | 完成 |
2. 建立規格的初始草稿 | 完成 |
3. 收集意見回饋並反覆改進設計 | 完整 |
4. 來源試用。 | 完整 |
5. 發布 | 完成 |
使用 Launch Handler API
瀏覽器支援
啟動處理常式僅適用於 ChromeOS。
介面
Launch Handler API 定義了兩個介面。
LaunchParams
:包含消費者要處理的 targetURL
的物件。LaunchQueue
:佇列會啟動,直到由指定取用端處理為止。
launch_handler
資訊清單成員
若要透過宣告指定應用程式的啟動行為,請在資訊清單中新增 launch_handler
資訊清單成員。其中有一個名為 client_mode
的子欄位。可讓您控管是否應啟動全新或現有的用戶端,以及是否應瀏覽這個用戶端。在下方範例中,包含範例值的檔案一律會將所有啟動內容轉送至新的用戶端。
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
如果未指定,launch_handler
預設為 {"client_mode": "auto"}
。子欄位可使用的值如下:
client_mode
:navigate-new
:系統會在網頁應用程式視窗中建立新的瀏覽結構定義,以載入啟動作業的目標網址。navigate-existing
:最近與網頁應用程式視窗中的瀏覽結構定義互動,會前往啟動的目標網址。focus-existing
:系統會選擇最近在網頁應用程式視窗中與瀏覽結構定義互動的時間,處理啟動作業。新的LaunchParams
物件 (其targetURL
已設為啟動網址) 會排入文件的window.launchQueue
中。auto
:行為由使用者代理程式決定最適合平台。舉例來說,行動裝置僅支援單一用戶端,並使用existing-client
,而電腦裝置支援多個視窗,並使用navigate-new
避免資料遺失。
client_mode
屬性也接受值清單 (陣列),其中會使用第一個有效值。這可讓系統在規格中加入新值,而不會破壞與現有實作的回溯相容性。
舉例來說,如果新增了假設值 "focus-matching-url"
,網站就會指定 "client_mode": ["focus-matching-url", "navigate-existing"]
,以便繼續控制不支援 "focus-matching-url"
的舊版瀏覽器的行為。
使用 window.launchQueue
在下列程式碼中,extractSongID()
函式會從啟動時傳遞的網址擷取 songID
。這可用來在音樂播放器 PWA 中播放歌曲。
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
示範
您可以在 PWA Launch Handler Demo 中查看 Launch Handler API 的實際運作情況。請務必查看應用程式的原始碼,瞭解應用程式如何使用 Launch Handler API。
- 在 ChromeOS 裝置上安裝 Musicr 2.0 應用程式。
- 在表單
https://launch-handler.glitch.me?track=https://example.com/music.mp3
的即時通訊應用程式中,傳送連結給自己。(您可以針對指向音訊檔案的任何網址自訂https://example.com/music.mp3
,例如https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
)。 - 按一下即時通訊應用程式中的連結,您會發現「音樂人 2.0」開啟並播放曲目的方式。
- 再次按一下即時通訊應用程式中的連結,您會發現您不會看見第二個執行個體「Musicr 2.0」。
意見回饋
Chromium 團隊希望瞭解您使用 Launch Handler API 的體驗。
介紹 API 設計
是否有任何與預期不符的 API 問題?或者是否遺漏了需要實現構想的方法或屬性?對安全性模型有任何疑問或意見嗎?在對應的 GitHub 存放區上提出規格問題,或是將您的想法加入現有問題。
回報導入作業相關問題
您在 Chromium 的實作中發現錯誤嗎?還是實作方式與規格不同?
請前往 new.crbug.com 回報錯誤。請盡可能提供詳細資訊、輕鬆重現的簡易操作說明,並在「Components」方塊中輸入 Blink>AppManifest
。Glitch 最適合用來分享快速簡單的重製提案。
顯示對 API 的支援
你是否打算使用 Launch Handler API?透過您的公開支援服務,Chromium 團隊能優先處理特定功能,並向其他瀏覽器廠商瞭解支援這些功能的重要性。
使用主題標記 #LaunchHandler
將推文傳送至 @ChromiumDev,並告訴我們您的使用地點和方式。