アプリの起動方法を制御する。
Launch Handler API を使用すると、アプリの起動方法を制御できます。たとえば、既存のウィンドウを使用するか、新しいウィンドウを使用するか、選択したウィンドウを起動 URL に移動させるかどうかなどを指定できます。同じ
File Handing API をリクエストすると、起動されたページの window.launchQueue
に LaunchParams
オブジェクトもキューに追加されます。
現在のステータス
ステップ | ステータス |
---|---|
1. 説明を作成する | 完了 |
2. 仕様の初期ドラフトを作成する | 完了 |
3. フィードバックの収集と設計の反復処理 | 完了 |
4. オリジン トライアル。 | 完了 |
5. リリース | 完了 |
Launch Handler API を使用する
ブラウザ サポート
インターフェース
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 を起動します。
- Musicr 2.0 アプリをインストールします。
- フォームのチャット アプリケーションでリンクを自分に送信する
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
)。 - チャットアプリのリンクをクリックして、Musicr 2.0 が開き、トラックが再生されることを確認します。
- チャットアプリでリンクをもう一度クリックしても、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 にツイートを送信し、どこでどのように使用しているかをお知らせください。