起動ハンドラ API

アプリの起動方法を制御する。

Launch Handler API を使用すると、アプリの起動方法を制御できます。たとえば、既存のウィンドウを使用するか、新しいウィンドウを使用するか、選択したウィンドウを起動 URL に移動させるかどうかなどを指定できます。同じ File Handing API をリクエストすると、起動されたページの window.launchQueueLaunchParams オブジェクトもキューに追加されます。

現在のステータス

ステップ ステータス
1. 説明を作成する 完了
2. 仕様の初期ドラフトを作成する 完了
3. フィードバックの収集と設計の反復処理 完了
4. オリジン トライアル。 完了
5. リリース 完了

Launch Handler API を使用する

ブラウザ サポート

対応ブラウザ

  • Chrome: 110。
  • Edge: 110。
  • Firefox: サポートされていません。
  • Safari: サポートされていません。

ソース

インターフェース

Launch Handler API は、2 つの新しいインターフェースを定義します。

LaunchParams : コンシューマが処理する targetURL を含むオブジェクト。 LaunchQueue : 指定されたコンシューマによって処理されるまで、起動をキューに入れます。

launch_handler マニフェスト メンバー

アプリの起動動作を宣言的に指定するには、マニフェストに launch_handler マニフェスト メンバーを追加します。client_mode というサブフィールドが 1 つあります。新規に 1 対 1 で 既存のクライアントを起動するかどうかと、このクライアントを操作するかどうかを選択できます。次の例をご覧ください。 常に新しい宛先にルーティングする値の例を示すファイル できます。

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

指定しない場合、launch_handler はデフォルトで {"client_mode": "auto"} になります。この引数に指定できる値は サブフィールドがあります。

  • client_mode:
    • navigate-new: リリースのターゲットを読み込むために、ウェブアプリのウィンドウで新しいブラウジング コンテキストが作成されます。 URL。
    • navigate-existing: ウェブアプリでブラウジング コンテキストを最後に操作 起動のターゲット URL に移動します。
    • focus-existing: ウェブアプリ ウィンドウで最後に操作されたブラウジング コンテキストが、起動の処理に選択されます。targetURL が起動 URL に設定された新しい LaunchParams オブジェクトが、ドキュメントの 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() が起動時に渡された URL から 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 起動ハンドラのデモGoogle 広告ヘルプセンターの アプリケーションのソースコードを確認して、 Handler API を起動します。

  1. Musicr 2.0 アプリをインストールします。
  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. チャットアプリでリンクをもう一度クリックしても、Musicr 2.0 のインスタンスが 2 つ作成されることはありません。

フィードバック

Chromium チームでは、Launch Handler API の使用経験についてお聞かせください。

API 設計について教えてください

API について、想定どおりに機能していないものはありますか?あるいは不足しているメソッドがあるか アイデアを実現するために必要なものやプロパティは?セキュリティ モデルに関するご質問やご意見がございましたら、対応する GitHub リポジトリで仕様に関する問題を報告するか、 解決します

実装に関する問題を報告する

Chromium の実装にバグは見つかりましたか?または、実装が仕様と異なっていますか? new.crbug.com でバグを報告します。できるだけ詳細な情報と再現手順を記載し、[コンポーネント] ボックスに Blink>AppManifest を入力します。Glitch は、すぐに再現を共有するのに最適です。

API のサポートを表示する

Launch Handler API を使用する予定ですか?皆様の公開サポートが Chromium チームの力になります 他のブラウザ ベンダーがそれらの機能をサポートすることの重要性を説明します。

ハッシュタグ #LaunchHandler を使用して @ChromiumDev にツイートを送信し、どこでどのように使用しているかをお知らせください。

関連情報