WebViewに初期フォーカスを設定する方法
WebViewにフォーカスを設定する方法は次のとおりです。src/App.tsxファイルで、WebViewコンポーネントにhasTVPreferredFocus={true}プロパティを追加して、初期フォーカスを設定します。
WebViewページからのメッセージの送受信
Vega用WebViewを使用してメッセージを送受信できます。メッセージを送受信するには、次のオプションを使用します。- Vega向けReact Native -> ウェブ:
injectJavaScriptメソッド。 - ウェブ -> Vega向けReact Native:
onMessageプロパティ。
VegaデバイスのFire TV機能をウェブページから実装する方法
window.ReactNativeWebView.postMessageメソッドは、Vega向けReact NativeのonMessageプロパティを実行します。これを使用して、VegaデバイスのFire TV機能をトリガーできます。window.ReactNativeWebView.postMessageは引数を1つだけ受け取り、これには文字列を渡す必要があります。
Vega向けWebViewでHDR形式とコーデックのサポートを確認する方法
WebViewは現在、現在のFire TVデバイスでHEVC Main10(HLG、HDR10、HDR10+)とVP9 Profile2(HLG、HDR10)をサポートしています。現在のFire TVデバイスはまだAV1 HDRをサポートしていません。HDRにはH264およびVP8コーデックを使用しないでください。 HDRが利用可能かどうかを確認するには、canPlayType()またはisTypeSupported()を使用します。
ウェブのJavaScriptで戻るボタンのリモコンキーイベントを有効にする方法
allowSystemKeyEventsプロパティは、戻るボタン(keyCode: 27)などの特定のシステムキーイベントを、ウェブアプリでアクティブにリッスンするかどうかを制御します。戻るボタンのリモコンキーイベントを有効にするには、次の操作を行います。
- src/App.tsxファイルで、
allowSystemKeyEventsプロパティをtrueに設定します。
デバッグ用にDevToolsを有効にして使用する方法
アプリをデバッグバージョン(process.env.NODE_ENV = 'development')でビルドすると、Chrome DevToolsがデフォルトで有効になります。DevToolsデバッグアプリをビルドするには、次の操作を行います。
-
コマンドプロンプトで、次のコマンドを実行します。
- デバッグアプリをインストールして、起動します。これによってWebViewが開きます。
-
コマンドプロンプトで、次のコマンドを実行してポートフォワーディングを行います。
- Google Chromeを開き、chrome://inspect/#devicesに移動します。
- [Remote Target] セクションで、接続されているデバイスの一覧からDevToolsを見つけます。
- [inspect] をクリックしてDevToolsを開き、WebViewを検査します。
サポートされているリモコンキーイベント
次の表は、サポートされているリモコンキーイベントと、それぞれに関連付けられているキーコードを示しています。canPlayType()を使用してHDRを確認する例
isTypeSupported()を使用してHDRを確認する例
MediaCapabilities.decodingInfo()には既知の問題があるため、使用しないでください。VP9プロファイル2のサポートがfalseとして報告されます。
HEVCを使用する例
デフォルトのメディアコントロールハンドラーをオーバーライドする方法
アプリによっては、WebViewのデフォルトのメディアコントロールよりもきめ細かいメディア再生コントロールを提供することが必要になることがあります。以下に例をいくつか挙げます。- 広告再生中のシーク操作を無効にする。
- ライブ再生中にすべてのメディアコントロールを無効にする。
navigator.mediaSessionを使用してウェブベースで実装する。この実装では、以下の理由からallowsDefaultMediaControlを有効にしてください。- 再生、一時停止、早送り、早戻しのトランスポートコントロールが可能になる。
- アプリコードを変更しなくても、ウェブページ内で直接機能する。
- アプリのコード内で
VegaMediaControlインターフェイスを直接統合する。この統合では、以下の理由からallowsDefaultMediaControlを有効にしてください。- デバイスのメディアコントロール機能へのフルアクセスが提供される。
- システムとの密接な統合を必要とするアプリに適している。
navigator.mediaSessionを使用したウェブベースの実装
navigator.mediaSessionプロパティは、ウェブページのメディアコントロールとデバイスのメディアコントロールシステムの間に強力なインターフェイスを提供するウェブ標準です。これにより、ウェブアプリでは、現在再生中のメディアに対するアクションハンドラーをメディアコントロールに登録したり、さまざまなコンテンツでのメディアコントロールの動作をカスタマイズしたりできます。
WebViewでallowsDefaultMediaControlがtrueに設定されていると、Alexa音声コマンドなどのシステムレベルのコントロールは、登録されたカスタムハンドラーがあればそのハンドラーに渡されます。登録されたハンドラーがない場合、WebViewはデフォルトの実装に戻ります。広告やライブストリーム中などの再生コンテキストに基づいてカスタムハンドラーを使用できます。
たとえば、allowsDefaultMediaControlがtrueに設定されている場合にユーザーが「アレクサ、早送りして」と言うと、ウェブページにseekforwardハンドラーが登録されていれば、WebViewはそのハンドラーにコマンドを渡します。開発者がハンドラーを登録していない場合、WebViewはデフォルトのシーク実装にフォールバックします。この機能によってウェブページでは、広告の再生中にはシークをブロックするなど、再生中のコンテンツに基づいてシークの動作を制御できます。
navigator.mediaSessionを使用する例
アプリでのVegaMediaControlインターフェイスの統合
VegaMediaControlは、Vegaアプリでメディア再生を管理するためのインターフェイスを提供します。これを直接統合することで、再生コントロールやシーク操作などのメディア機能をきめ細かく制御できます。
VegaウェブアプリをVegaMediaControlと統合する主な手順は次のとおりです。
-
WebViewのプロパティを構成します。
- WebViewのデフォルトのメディアコントロールは、デフォルトで無効になっています。コントロールを無効にしておくために、プロパティは未設定のままにするか、
allowsDefaultMediaControlを明示的にfalseに設定します。VegaMediaControlの統合を使用するには、デフォルトのメディアコントロールを無効のままにしてください。
- WebViewのデフォルトのメディアコントロールは、デフォルトで無効になっています。コントロールを無効にしておくために、プロパティは未設定のままにするか、
-
VegaMediaControlインターフェイスを実装します。VegaMediaControlの統合をアプリに追加します。
-
ブリッジを介してJavaScriptと通信します。
injectJavaScriptを使用して、VegaMediaControlハンドラーに従ってウェブプレーヤーを制御します。
アプリのコードでVegaMediaControlを統合する例
以下の例では、一時停止、再生、早送り、早戻しの各コマンドを処理する方法を詳しく示します。これらのコマンドはすべて、Vegaウェブアプリ内でVegaMediaControlを使用します。
-
manifest.tomlで、
VegaMediaControlのサポートを追加します。KMCとその他のエントリでマニフェストを更新します。 -
package.jsonに次の依存関係を追加します。
-
以下のアプリコードの例では、KMCサーバーと、関連付けられるハンドラーを作成します。これらのハンドラーを使用すると、カスタム動作のJavaScriptをウェブページに挿入できます。
デバイスに保存されているローカルファイルのURLをWebViewに読み込む方法
デフォルトでは、WebViewは/pkg/assetsディレクトリからアプリを読み込みます。ただし、別のディレクトリからアプリファイルを読み込む場合は、特定のプロパティをtrueに設定する必要があります。デバイスに保存されているローカルアプリファイルのURLを読み込むには、次の操作を行います。
- src/App.tsxで、
allowFileAccessプロパティをtrueに設定します。
trueに設定すると、WebViewでアプリファイルへのアクセスが可能になり、選択されたディレクトリからアプリファイルを表示できます。allowFileAccessをtrueに設定しないと、別のディレクトリからアプリファイルを読み込もうとしたときに、「アクセスが拒否されました」というエラーが発生します。ファイルアプリはサンドボックス環境内で機能し、デバイスのファイルシステムへのアクセスが制限されます。ファイルアプリからアクセスできるディレクトリを以下の表に示します。
例:WebViewを使用してassetsディレクトリからHTMLファイルを読み込む
例:WebViewを使用してアプリのデータディレクトリからHTMLファイルを読み込む
WebViewでのD-Padナビゲーション
WebViewでは、基本的なD-Padナビゲーションを提供するために、デフォルトで空間ナビゲーションが有効になっています。WebViewで空間ナビゲーションを防ぐ方法
デフォルトの空間ナビゲーションフォーカスではなくカスタムのフォーカス管理を実装するアプリでは、keydownイベントをキャッチするときにEvent::preventDefaultを使用できます。Event::preventDefaultを使用すると、カスタムのフォーカスロジックと組み込みのWebView空間ナビゲーションとの競合を防ぐことができます。
シリアル化されたCookieを管理する場合、またはアプリのCookieを消去する場合は、VegaウェブアプリCookieマネージャーを参照してください。その他のWebView APIについては、Vegaウェブアプリのコンポーネントリファレンスを参照してください。
ページの読み込み前に白い画面が点滅するのを防ぐ方法
ウェブページを読み込む前に、ビューはコンポーネントの背景色を使用します。背景色を設定しない場合、WebViewは白い背景を選択します。背景色を変更するには、WebViewコンポーネントのbackgroundColorスタイルを更新します。
ビデオ再生画面の上部にあるリモート再生アイコンを削除する方法
WebViewで画面の上部にアイコンが表示される場合、disableRemotePlaybackプロパティが原因である可能性があります。アイコンを削除するには、このプロパティをtrueに設定します。このプロパティがtrueの場合は無効を示し、falseの場合は有効なままであることを示します。
以下に例を示します。

