このガイドでは、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 の再生状態にバインドします。