啟動 Handler API

控制應用程式的啟動方式。

Launch Handler API 可讓您控制應用程式的啟動方式,例如應用程式要使用現有視窗還是新視窗,以及所選視窗是否導向至啟動網址。與 File Handing API 一樣,這也會在啟動頁面的 window.launchQueue 中將 LaunchParams 物件排入佇列。

目前狀態

步驟 狀態
1. 建立說明 完成
2. 建立規格的初始草稿 完成
3. 收集意見回饋並反覆改進設計 已完成
4. 來源試用。 已完成
5. 發布 完成

使用 Launch Handler API

瀏覽器支援

啟動處理常式僅適用於 ChromeOS。

瀏覽器支援

  • 110
  • 110
  • x
  • x

來源

介面

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);
      }
    }
  });
}

操作示範

如要查看 Launch Handler API 的實際操作示範,請參閱 PWA 啟動處理常式示範。請務必查看應用程式的原始碼,瞭解應用程式如何使用 Launch Handler API。

  1. 在 ChromeOS 裝置上安裝 Musicr 2.0 應用程式。
  2. 透過 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)。
  3. 按一下即時通訊應用程式中的連結,然後留意「Musicr 2.0」如何開啟並播放曲目。
  4. 再次點選即時通訊應用程式中的連結,您會發現系統不會再顯示 Musicr 2.0 的執行個體。

意見回饋:

Chromium 團隊想瞭解你的 Launch Handler API 使用體驗。

請與我們分享 API 設計

您覺得這個 API 有任何不如預期的運作方式嗎?還是你還需要實現想法或屬性呢?對安全性模型有任何疑問或意見嗎?在對應的 GitHub 存放區上提出規格問題,或是將您的想法新增至現有問題。

回報導入問題

您發現 Chromium 實作錯誤嗎?還是採用與規格不同? 前往 new.crbug.com 回報錯誤。此外,請務必盡量提供詳細資料、能重現的簡單操作說明,並在「Components」(元件) 方塊中輸入 Blink>AppManifestGlitch 有便捷的報復工具,

顯示對 API 的支援

您是否打算使用 Launch Handler API?您的公開支援服務有助於 Chromium 團隊優先開發特定功能,並向其他瀏覽器廠商說明支援這些功能的重要性。

使用主題標記 #LaunchHandler 將推文傳送到 @ChromiumDev,並告訴我們您在哪裡使用它。

實用連結