起動ハンドラ API

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

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

現在のステータス

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

Launch Handler API を使用する

ブラウザ サポート

インターフェース

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

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

launch_handler マニフェスト メンバー

アプリの起動動作を宣言的に指定するには、マニフェストに launch_handler マニフェスト メンバーを追加します。client_mode というサブフィールドが 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" が追加された場合、サイトは "focus-matching-url" を指定して、"focus-matching-url" をサポートしていない古いブラウザの動作を制御し続けます。"client_mode": ["focus-matching-url", "navigate-existing"]

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 Launch Handler Demo でご覧いただけます。アプリの ソースコードをチェックして、Launch Handler API の使用方法を確認してください。

  1. Musicr 2.0 アプリをインストールします。
  2. チャット アプリケーションで、https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3 形式のリンクを自分に送信します。(https://example.com/music.mp3 は、音声ファイルを指す URL に合わせてカスタマイズできます。たとえば、https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav などです)。
  3. チャットアプリのリンクをクリックすると、Musicr 2.0 が開いてトラックが再生されます。
  4. チャットアプリのリンクをもう一度クリックすると、Musicr 2.0 の 2 つ目のインスタンスは表示されません。

フィードバック

Chromium チームは、Launch Handler API の使用感について皆様のご意見をお待ちしています。

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

API について、想定どおりに動作しない点はありますか?アイデアを実装するために必要なメソッドやプロパティが不足している場合はどうすればよいですか?セキュリティ モデルについてご質問やご意見がある場合は、対応する GitHub リポジトリで仕様に関する問題を報告するか、既存の問題に意見を追加してください。

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

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

API のサポートを表示する

Launch Handler API を使用する予定はありますか?公開サポートは、Chromium チームが機能の優先順位を付け、他のブラウザ ベンダーにサポートの重要性を示すのに役立ちます。

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

関連情報