前提条件
Cast 用の PAL SDK を統合してテストするには、次のものが必要です。
ノンスを生成するレシーバー アプリ メッセージ 使用します。
受信側の読み込みをトリガーする送信アプリ 広告リクエストが含まれるコンテンツです
レシーバー アプリを更新するだけで PAL SDK を統合できるため、 Cast Command and Control(CAC)ツールを使用できます。 使用して受信テストを行います。
まずウェブ アプリケーションを起動することで、各ステップの最後でサンプルを実行できます。 CAC のレシーバーアプリ ツールを使用して読み込みリクエストを実行します。
ノンスを生成
「ノンス」鍵暗号鍵(KEK)を使用して PAL によって生成される、
NonceManager
。「
NonceManager
は、
loadNonceManager
NonceLoader
のメソッド、
ルールで渡された設定に基づいて
NonceRequest
。結果を確認するには、
PAL を使用してノンスを生成するサンプルアプリについては、
GitHub。
新しいストリーム リクエストごとに新しいノンスが必要です。同じ階層内に複数の広告リクエスト 同じストリームで同じノンスを使用できますPAL SDK を使用してノンスを生成するには、まず カスタマイズしたウェブ レシーバーを作成する アプリ 次のコードを追加します。
receiver.html
<!DOCTYPE html>
<html>
<head>
<script src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/pal/sdkloader/cast_pal.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<footer>
<script src="js/receiver.js" type="module"></script>
</footer>
</body>
</html>
<cast-media-player>
要素は、Google Play Console で提供される組み込みのプレーヤー UI を
Cast Web Receiver API を使用できます。ストリームタイプに応じて、実際に使用するプレーヤーが
場合によって異なります。これらのプレーヤーの正確なバージョンは Google Cast で確認できます
SDK のリリースノート。
次に、以下のコードを追加して、LOAD
イベント
レシーバが新しい値を読み込むたびにノンスを生成します。
MediaInformation
オブジェクト:
js/receiver.js
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const consentSettings = new goog.cast.pal.ConsentSettings();
// For the correct usage of the allowStorage property, See
// developers.google.com/ad-manager/pal/cast/reference/js/ConsentSettings#allowStorage.
consentSettings.allowStorage = true;
// You need a nonce loader to request your stream's nonceManager. The
// nonceManager provides your nonce. You should reuse the same nonce loader for
// the entire lifecycle of the receiver.
const nonceLoader = new goog.cast.pal.NonceLoader(consentSettings);
// You need a reference to the NonceManager to track when an ad is shown or
// clicked.
let nonceManager;
/**
* Sends a debug message to the CAF sender.
*
* @param {String} message - The message to send
*/
const log = (message) => {
// Use CastDebugLogger to log a message to the sender. See
// https://developers.google.com/cast/docs/debugging/cast_debug_logger.
}
/**
* Stores the nonce manager in the outer scoped variable and retrieves a nonce,
* so it can be used to build your ad request URL
*
* @param {NonceManager} loadedNonceManager - The loaded nonce manager
*/
const buildAdRequest = (loadedNonceManager) => {
nonceManager = loadedNonceManager;
const nonce = nonceManager.getNonce();
log('received nonce:' + nonce);
// TODO: Set this nonce as the value for the `givn` parameter of your ad
// request URL. For example:
// const adRequestURL = 'https://myadserver.com/ads?givn=' + nonce;
}
/**
* Configures a new nonce request, then requests a nonce.
*
* @param {LoadRequestData} loadRequestData - the load request object,
* which contains the MediaInformation object from the sender. See
* developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.LoadRequestData
* @return {(Promise<LoadRequestData>)} - A Promise to build an ad request.
*/
const handleLoadRequest = (loadRequestData) => {
// Clear any old nonceManager before loading new media.
nonceManager = null;
// See developers.google.com/ad-manager/pal/cast/reference/js/NonceRequest
// for details about each property. The NonceRequest parameters set here are
// example parameters. You should set your parameters based on your own app
// characteristics.
const nonceRequest = new goog.cast.pal.NonceRequest();
nonceRequest.adWillAutoPlay = true;
// A URL describing the video stream.
nonceRequest.descriptionUrl = 'https://example.com';
nonceRequest.iconsSupported = true;
nonceRequest.ppid = 'Sample PPID';
nonceRequest.sessionId = 'Sample SID';
nonceRequest.url = loadRequestData.media.contentUrl;
// The height of the player in physical pixels.
// For a fullscreen player on a 1080p screen, the video height would be 1080.
nonceRequest.videoHeight = window.devicePixelRatio * window.screen.height;
// The width of the player in physical pixels.
// For a fullscreen player on a 1080p screen, the video width would be 1920.
nonceRequest.videoWidth = window.devicePixelRatio * window.screen.width;
return nonceLoader.loadNonceManager(nonceRequest)
.then(buildAdRequest)
.catch((e) => {
log("Error: " + e.message);
});
};
// Set up the event handler for the LOAD event type.
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.LOAD, handleLoadRequest);
castContext.start();
VAST 直接呼び出し(DVC)を行う場合は、このノンスを
givn
パラメータ。ノンスは URL セーフです。URL エンコードの必要はありません。
動画操作をトラッキングする
ノンスを生成するだけでなく、特定のコンテキストで PAL SDK に通知する必要があります。 向上しますキャスト レシーバーの操作をトラッキングするには、 次のコードをカスタム レシーバーに追加します。
js/receiver.js
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const consentSettings = new goog.cast.pal.ConsentSettings();
// For the correct usage of the allowStorage property, See
// developers.google.com/ad-manager/pal/cast/reference/js/ConsentSettings#allowStorage.
consentSettings.allowStorage = true;
// You need a nonce loader to request your stream's nonceManager. The
// nonceManager provides your nonce. You should reuse the same nonce loader for
// the entire lifecycle of the receiver.
const nonceLoader = new goog.cast.pal.NonceLoader(consentSettings);
// You need a reference to the NonceManager for sending ad events.
let nonceManager;
// Track playback status.
let playbackDidStart = false;
...
// Register the start of playback.
playerManager.addEventListener(cast.framework.events.EventType.PLAYING, () => {
if (playbackDidStart) return;
playbackDidStart = true;
if (nonceManager) {
log('Registered playback start');
nonceManager.sendPlaybackStart();
} else {
log("Error: There is no nonce manager for this media.");
}
});
// Register any interactions with the player.
const interactionEvents = [
cast.framework.events.EventType.REQUEST_SEEK,
cast.framework.events.EventType.REQUEST_STOP,
cast.framework.events.EventType.REQUEST_PAUSE,
cast.framework.events.EventType.REQUEST_PLAY,
cast.framework.events.EventType.REQUEST_SKIP_AD,
cast.framework.events.EventType.REQUEST_PLAY_AGAIN,
cast.framework.events.EventType.REQUEST_PLAYBACK_RATE_CHANGE,
cast.framework.events.EventType.REQUEST_VOLUME_CHANGE,
cast.framework.events.EventType.REQUEST_USER_ACTION,
cast.framework.events.EventType.REQUEST_FOCUS_STATE,
];
playerManager.addEventListener(interactionEvents, (interactionEvent) => {
if (nonceManager) {
log('Registered interaction: ' + interactionEvent);
nonceManager.sendAdTouch(interactionEvent);
} else {
log("Error: There is no nonce manager for this media.");
}
});
// Register the end of playback.
playerManager.addEventListener(cast.framework.events.EventType.MEDIA_FINISHED, () => {
playbackDidStart = false;
if (nonceManager) {
log('Registered playback end');
nonceManager.sendPlaybackEnd();
} else {
log("Error: There is no nonce manager for this media.");
}
});
castContext.start();
(省略可)第三者広告サーバーを介して Google アド マネージャーのシグナルを送信する
第三者広告サーバーからのアド マネージャーのリクエストを設定します。Google Chat の設定 次の手順を完了すると、ノンス パラメータが PAL SDK から伝播されます。 中継サーバー経由で Google アドマネージャーに 送信されますこれにより、 Google アドマネージャーを通じた収益化
第三者の広告サーバーを設定し、サーバーの アド マネージャーに送信します。このスライドは、 指定することもできます。
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
詳しくは、Google アド マネージャーのサーバーサイドの実装 ガイドをご覧ください。
アド マネージャーでは、givn=
を探してノンスの値を識別します。第三者の広告
独自のマクロをいくつかサポートする必要があります。
%%custom_key_for_google_nonce%%
を実行し、ノンス クエリ パラメータに置き換えます。
確認します。詳細な手順
第三者広告サーバーのドキュメントをご覧ください