アプリの起動方法を管理します。
Launch Handler API を使用すると、アプリの起動方法(既存のウィンドウと新しいウィンドウのどちらを使用するか、選択したウィンドウを起動 URL に移動するかどうかなど)を制御できます。これにより、File Handing API と同様に、起動されたページの window.launchQueue
に LaunchParams
オブジェクトが追加されます。
現在のステータス
ステップ | ステータス |
---|---|
1. 説明動画を作成 | 完了 |
2. 仕様の最初のドラフトを作成する | 完了 |
3. フィードバックを収集して設計を繰り返す | 完了 |
4. オリジン トライアル。 | 完了 |
5. リリース | 完了 |
Launch Handler API の使用
ブラウザ サポート
起動ハンドラは ChromeOS でのみ使用できます。
インターフェース
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"
が追加された場合、サイトでは "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 Launch Handler デモで確認できます。アプリケーションのソースコードを調べて、Launch Handler API の使用方法を確認してください。
- ChromeOS デバイスに Musicr 2.0 アプリをインストールします。
- チャット アプリケーションで
https://launch-handler.glitch.me?track=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
などの音声ファイルを指す任意の URL のhttps://example.com/music.mp3
をカスタマイズできます)。 - チャットアプリのリンクをクリックすると、Musicr 2.0 が開き、トラックが再生されることを確認します。
- チャットアプリのリンクをもう一度クリックすると、Musicr 2.0 の 2 番目のインスタンスを取得できないことがわかります。
フィードバック
Chromium チームは、Launch Handler API の使用経験をお寄せください。
API 設計についてお聞かせください
API について、想定どおりに機能しない点はありますか?あるいは、アイデアを実装するために必要なメソッドや プロパティが足りないか。セキュリティ モデルに関する質問やコメントがある場合は、対応する GitHub リポジトリで仕様に関する問題を報告するか、既存の問題にご意見を記入してください。
実装に関する問題を報告する
Chromium の実装でバグが見つかりましたか?または、実装が仕様と異なっていますか?
new.crbug.com でバグを報告します。可能な限り詳細に、再現の簡単な手順を記載して、[Components] ボックスに「Blink>AppManifest
」と入力します。Glitch は、再現をすばやく簡単に共有するのに最適なツールです。
API をサポートすることを伝える
Launch Handler API を使用する予定はありますか?皆様からのサポートにより、Chromium チームは機能の優先順位付けに役立ち、サポートの重要性を他のブラウザ ベンダーに示すことができます。
ハッシュタグ #LaunchHandler
を使用して @ChromiumDev にツイートを送信し、どこでどのように使用しているかをお知らせください。