このガイドでは、Cast Receiver v2 アプリを最新のウェブ レシーバー アプリ
Web Receiver v3 とも呼ばれる新しい Cast Application Framework(CAF)SDK は、 Receiver v2 SDK からのメジャー アップグレードにWeb Receiver SDK は メディアの Web Receiver アプリケーションを開発するための、簡単で合理化された SDK です。
Web Receiver では、新しい CAF 送信者とより一貫性のある API が提供される APIプレーヤー(MPL と Shaka)と完全に統合されており、 キャスト メディアと Google アシスタントの実装とサポート 使用できます。CAF SDK には、簡単にスタイル設定できるデフォルト UI も用意されています。 データ バインディング サービスを使用して UI を簡単に実装できます。
移行の理由
Receiver v2 アプリケーションを Web Receiver に移行すると、 削除できるので、作文に集中できます アプリケーション固有のビジネス ロジックです。
CAF は MPL と Shaka のプレーヤーをシームレスに統合し、より幅広いプレーヤーをサポート HTTP Live Streaming(TS および CMAF)、MPEG-DASH、Smooth メディア要素のソース プロパティでサポートされているストリーミングおよび型(MP3、MP4、 Icecast など)。一覧については、Google Cast でサポートされているメディアをご覧ください。 現在、CAF はユーザーが指定するプレーヤーをサポートしていません。
CAF に移行すると、Google アシスタントによる音声操作に対応できるようになります。 新しい Google アシスタントの音声コマンドは、 CAF を使用します。
「言語ごとにトラックを変更」などの新しいメディア コマンドのサポートに加え、 CAF には、キューイング機能、組み込みの広告機能も備わっています。 より充実したリアルタイムサポートを利用できます。
何が変更されたのですか?
Web Receiver API は、 の CAF 送信者 Android、 iOS、 バージョン 2 とは大きく異なります。
Web Receiver は新しい名前空間を使用しています
cast.framework
公開されたすべての API で、cast.receiver 名前空間ではなく、多く
v2 で使用されていたデータ オブジェクトは CAF で同一であり、
cast.framework.messages
(ほとんどが cast.receiver.media 以下でした)。
次の v2 サービスは、対応する CAF サービスに置き換えられます。
CastReceiverManagerクラスを置換するCastReceiverContextこれはシングルトンで、キャスト セッション、送信側、 グローバルなシステム イベントが含まれます。「CastReceiverOptionsグローバル アプリケーション オプション(キュー、レシーバなど)を バージョン、再生設定など)をコンテキストに追加します。MediaManagerクラスを置換するPlayerManagerこれは Pod のCastReceiverContextメディア セッション、メディア リクエスト、Google Cloud からの アシスタントの音声リクエスト(v2 ではCommandAndControlManager)、 イベントを発生させますプレーヤーの構成 (MPL ではcast.player.api.Host)の提供元PlaybackConfig, グローバルに、または読み込みリクエストごとに指定できます。
PlayerManager は、新しいサブマネージャー クラスも公開しています。
TextTracksManager- メディア テキスト トラックを管理します。AudioTracksManager- 音声トラックを管理します。QueueManager- キューを管理します。BreakManager- 広告を管理します。
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Set global options.
const options = new cast.framework.CastReceiverOptions();
options.versionCode = DEVELOPERS_APP_VERSION;
context.start(options);
レシーバーのビジネス ロジック
レシーバー v2 の公開イベント ハンドラ(CastReceiverManager.onReady や
MediaManager.onLoad など)を使用して、ビジネス ロジックを追加します。CAF では、イベント ハンドラは
イベント リスナーに置き換えられる
(CastReceiverContext.addEventListener)
メッセージ インターセプタ
(PlayerManager.setMessageInterceptor)。
Web Receiver は、1 つのイベントに対して複数のイベント リスナーを設定できます(リスナー
イベントには影響しない)、メッセージごとに 1 つのインターセプタが必要です。インターセプタ
リクエストを更新または処理できる(変更されたリクエスト、
(メッセージ、エラー メッセージなど)が返されます。Promise を返す非同期ハンドラにすることもできます。
読み込みリクエスト インターセプタは、 アプリケーション固有のロジックを実行できます。送信者からの読み込みリクエストの場合、 インターセプターが Content ID をコンテンツ URL に変換する。負荷インターセプタは、 明示的なインターセプタがない場合は、プリロード リクエストと事前キャッシュ リクエストに対しても呼び出されます 指定されています。
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
// Resolve entity to content id
if (request.media.entity && !request.media.contentId) {
return getMediaByEntity(request.media.entity).then(
media => {
request.media.contentId = media.url;
return request;
});
}
return request;
});
v2 のカスタマイズされたメディア ステータス ハンドラも、次のメッセージに置き換えられます。
インターセプタを指定します。Web Receiver アプリがインストールを許可されていない
メディア ステータスでメディア URL を公開できます。URL リゾルバを提供できる
(PlayerManager.setMediaUrlResolver),
読み込みリクエストのメディア URL を提供します。その URL は CAF によって使用されます
メディアのステータスには提供されません。
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
イベント
Web Receiver では
CastReceiverContext
および
PlayerManager。
ウェブ レシーバー アプリには任意のイベントで複数のリスナーを設定できます。
1 つのリスナーを複数のイベントに提供することもできます(参照:
cast.framework.events.category
表示することもできます)。
このイベントは、ユーザー リクエスト、再生の進行状況、プレーヤーの処理、 低レベルのメディア要素イベント(CAF はメディア要素自体を公開しません)。
Web Receiver アプリは、処理対象のイベント リスナーを追加できます(テキストや 読み込み完了時に定義を追跡したり、分析のために使用したりできます。
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
カスタム メッセージバス
CAF は API でメッセージバスを公開するのではなく、
CastReceiverContext.addCustomMessageListener
特定の Namespace にメッセージ リスナーを追加する(Namespace ごとに 1 つ)
CastReceiverContext.sendCustomMessage
Namespace でメッセージを送信します。すべての名前空間は、
Web Receiver の起動(つまり、
CastReceiverContext.start)。
Namespace は、
メッセージ リスナーを追加するか、Python コードで開始オプションとして
CastReceiverOptions.customNamespaces。
const options = new cast.framework.CastReceiverOptions();
options.customNamespaces = {
CUSTOM_NS: cast.framework.system.MessageType.JSON
};
context.start(options);
context.sendCustomMessage(CUSTOM_NS, {
type: 'status'
message: 'Playing'
});
デフォルト UI
CAF にはデフォルトのウェブ レシーバー UI があり、再生の進行状況バーと
追加することもできます。デフォルト UI はカスタム要素として提供される
(<cast-media-player>)
CSS のようなスタイル設定で
スタイル設定が可能です
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
Web Receiver アプリで独自の UI を実装すれば、さらにカスタマイズできます。「
Web Receiver は
cast.framework.ui.PlayerDataBinder
クラスを使用して UI オブジェクトを Web Receiver の再生状態にバインドします。