پیش نیازها
برای ادغام و آزمایش PAL SDK برای Cast، به موارد زیر نیاز دارید:
یک برنامه گیرنده برای تولید nonce با استفاده از رهگیری پیام .
یک برنامه فرستنده برای تحریک گیرنده برای بارگیری محتوای حاوی درخواست تبلیغات.
از آنجایی که برای ادغام PAL SDK فقط باید برنامه گیرنده خود را به روز کنید، می توانید از ابزار Cast Command and Control (CAC) به عنوان فرستنده وب برای آزمایش گیرنده خود استفاده کنید.
میتوانید نمونه را در پایان هر مرحله اجرا کنید، ابتدا برنامه گیرنده وب خود را در ابزار CAC اجرا کنید ، سپس هر درخواست بارگیری را انجام دهید.
ایجاد هیچ
یک "nonce" یک رشته رمزگذاری شده واحد است که توسط PAL از طریق NonceManager
تولید می شود. NonceManager
با روش loadNonceManager
NonceLoader
بر اساس تنظیمات ارسال شده در NonceRequest
ایجاد می شود. برای دیدن یک برنامه نمونه که از PAL برای تولید یک nonce استفاده میکند، نمونه Cast را از GitHub دانلود کنید.
هر درخواست جریان جدید نیاز به یک nonce جدید دارد. درخواستهای تبلیغاتی متعدد در یک جریان میتوانند از همان nonce استفاده کنند. برای تولید nonce با استفاده از PAL SDK، ابتدا یک برنامه گیرنده وب سفارشی شده ایجاد کنید و کد زیر را اضافه کنید:
گیرنده.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>
رابط کاربری داخلی پخش کننده ارائه شده توسط Cast Web Receiver API را نشان می دهد. بسته به نوع پخش، پخش کننده واقعی استفاده شده می تواند متفاوت باشد. میتوانید نسخههای دقیق این پخشکنندهها را در یادداشتهای انتشار Google Cast SDK بیابید.
سپس، کد زیر را برای رهگیری رویدادهای LOAD اضافه کنید و هر بار که گیرنده یک شی MediaInformation
جدید را بارگذاری می کند، یک nonce ایجاد کنید:
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)، این nonce را به عنوان مقدار پارامتر givn
تنظیم کنید. nonce URL امن است. شما نیازی به URL-encode آن ندارید.
تعاملات ویدیویی را ردیابی کنید
علاوه بر ایجاد یک nonce، PAL SDK باید در مورد فعل و انفعالات ویدیویی خاصی مطلع شود. برای پیگیری تعاملات با گیرنده Cast، کد زیر را به گیرنده سفارشی خود اضافه کنید:
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 Ad Manager را از طریق سرورهای تبلیغاتی شخص ثالث ارسال کنید
درخواست سرور آگهی شخص ثالث برای Ad Manager را پیکربندی کنید. پس از تکمیل مراحل زیر، پارامتر nonce از PAL SDK، از طریق سرورهای واسطه شما و سپس به Google Ad Manager منتشر می شود. این امکان کسب درآمد بهتر از طریق Google Ad Manager را فراهم می کند.
سرور تبلیغات شخص ثالث خود را پیکربندی کنید تا nonce را در درخواست سرور به Ad Manager لحاظ کند. در اینجا نمونه ای از تگ تبلیغاتی است که در داخل سرور تبلیغات شخص ثالث پیکربندی شده است:
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
برای جزئیات بیشتر، راهنمای پیاده سازی سمت سرور Google Ad Manager را ببینید.
Ad Manager برای شناسایی مقدار nonce به دنبال givn=
می گردد. سرور تبلیغات شخص ثالث باید از مقداری ماکرو خاص مانند %%custom_key_for_google_nonce%%
پشتیبانی کند و آن را با پارامتر درخواست nonce که در مرحله قبل ارائه کردید جایگزین کند. اطلاعات بیشتر در مورد نحوه انجام این کار باید در مستندات سرور تبلیغات شخص ثالث موجود باشد.