برای دیدن یک نمونه برنامه که از PAL برای تولید nonce استفاده میکند، نمونه CTV Samsung Tizen را از GitHub دانلود کنید.
این راهنما PAL SDK را در یک برنامه Samsung Tizen ادغام میکند، درخواست nonce میدهد و نمایش تبلیغات را ثبت میکند.
پیشنیازها
قبل از شروع این راهنما، باید یک برنامهی پایهی تایزن ایجاد کنید. میتوانید از Tizen IDE برای راهاندازی برنامه استفاده کنید. برای اطلاعات بیشتر، این ویدیو را در مورد شروع کار با تایزن ببینید.
یک نانس (nonce) ایجاد کنید
یک «نانس» یک رشته رمزگذاری شده واحد است که توسط PAL با استفاده از NonceLoader تولید میشود. PAL SDK نیاز دارد که هر درخواست جریان جدید با یک نانس تازه تولید شده همراه باشد. با این حال، نانسها میتوانند برای چندین درخواست تبلیغ در همان جریان دوباره استفاده شوند.
یک فایل HTML برای برنامه خود ایجاد کنید. وابستگی webapis.js را در فایل HTML خود قرار دهید. PAL برای عملکرد به این وابستگی نیاز دارد. برای اطلاعات بیشتر، به مستندات Samsung WebApi مراجعه کنید.
یک وابستگی برای CTV PAL SDK در فایل index.html خود قرار دهید. تگ اسکریپت را پس از تگ اسکریپت webapis.js بارگذاری کنید. برای مثال به فایل index.html زیر مراجعه کنید.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<script src="$WEBAPIS/webapis/webapis.js"></script>
<script src="//imasdk.googleapis.com/pal/sdkloader/pal_ctv.js"></script>
<script src="app.js"></script>
</head>
<body>
<header>
<hgroup>
<h1>Samsung Tizen app for PAL sdk</h1>
</hgroup>
</header>
<div id="placeholder-video"></div>
</body>
</html>
سیگنالهای اسپم PAL برای عملکرد صحیح به امتیازات خاصی در تایزن نیاز دارند. یک فایل config.xml با اعلان امتیازات زیر ایجاد کنید:
-
"http://tizen.org/privilege/internet" -
"http://tizen.org/privilege/system" -
"http://tizen.org/privilege/telephony" -
"http://tizen.org/privilege/tv.inputdevice" -
"http://developer.samsung.com/privilege/network.public" -
"http://developer.samsung.com/privilege/productinfo"
برای مشاهدهی نمونهای از فایل config.xml به قطعه کد زیر مراجعه کنید:
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns:tizen="http://tizen.org/ns/widgets" xmlns="http://www.w3.org/ns/widgets" id="http://yourdomain/BasicProject" version="1.0.0" viewmodes="maximized">
<tizen:application id="PACKAGE_STRING.BasicProject" package="PACKAGE_STRING" required_version="2.3"/>
<content src="index.html"/>
<feature name="http://tizen.org/feature/screen.size.normal.1080.1920"/>
<icon src="icon.png"/>
<tizen:metadata key="http://tizen.org/metadata/app_ui_type/base_screen_resolution" value="extensive"/>
<name>BasicProject</name>
<tizen:privilege name="http://tizen.org/privilege/internet"/>
<tizen:privilege name="http://tizen.org/privilege/system"/>
<tizen:privilege name="http://tizen.org/privilege/telephony"/>
<tizen:privilege name='http://tizen.org/privilege/tv.inputdevice'/>
<tizen:privilege name="http://developer.samsung.com/privilege/network.public"/>
<tizen:privilege name="http://developer.samsung.com/privilege/productinfo"/>
<tizen:profile name="tv-samsung"/>
<tizen:setting screen-orientation="landscape" context-menu="enable" background-support="disable" encryption="disable" install-location="auto" hwkey-event="enable"/>
<access origin="*" subdomains="true"/>
</widget>
سپس، یک فایل جاوا اسکریپت برای تولید یک nonce ایجاد کنید. این مرحله شامل گردش کار PAL برای ایجاد یک NonceLoader ، ایجاد یک NonceRequest و سپس درخواست یک nonce با استفاده از NonceLoader.loadNonceManager() .
let videoElement;
let nonceLoader;
let managerPromise;
let nonceManager;
let playbackStarted = false;
/**
* Initializes the PAL loader.
*/
function init() {
const videoElement = document.getElementById('placeholder-video');
videoElement.addEventListener('mousedown', onVideoTouch);
videoElement.addEventListener('touchstart', onVideoTouch);
videoElement.addEventListener('play', function() {
if (!playbackStarted) {
sendPlaybackStart();
playbackStarted = true;
}
});
videoElement.addEventListener('ended', sendPlaybackEnd);
videoElement.addEventListener('error', function() {
// Handle video error.
sendPlaybackEnd();
});
// The default value for the `allowStorage` parameter is false. You must
// set this value to true to let PAL determine whether limited ads applies
// based on the TCF data. You can optionlly use the `forceLimitedAds`
// parameter to enable limited ads regardless of the TCF data.
const consentSettings = new goog.pal.ConsentSettings();
consentSettings.allowStorage = true;
nonceLoader = new goog.ctv.pal.NonceLoader(consentSettings);
generateNonce();
}
/**
* Generates a nonce with sample arguments and logs it to the console.
*
* The NonceRequest parameters set here are example parameters.
* You should set your parameters based on your own app characteristics.
*/
function generateNonce() {
const request = new goog.ctv.pal.NonceRequest();
request.adWillAutoPlay = true;
request.adWillPlayMuted = false;
request.continuousPlayback = false;
request.descriptionUrl = 'https://example.com';
request.iconsSupported = true;
request.playerType = 'Sample Player Type';
request.playerVersion = '1.0';
request.ppid = 'Sample PPID';
request.sessionId = 'Sample SID';
// Player support for VPAID 2.0, OMID 1.0, and SIMID 1.1
request.supportedApiFrameworks = '2,7,9';
request.url = 'https://developers.google.com/ad-manager/pal/ctv';
request.videoHeight = 480;
request.videoWidth = 640;
managerPromise = nonceLoader.loadNonceManager(request);
managerPromise
.then(function(manager) {
nonceManager = manager;
})
.catch((error) => {
// Handle nonce generating error.
});
}
window.addEventListener("load", function(event) {
init();
});
نام کاربری خود را به درخواست تبلیغ پیوست کنید
برای استفاده از nonce تولید شده، قبل از ارسال درخواستهای تبلیغ، تگ تبلیغ خود را با پارامتر givn و مقدار nonce اضافه کنید.
/**
* The ad tag for your ad request, for example:
* https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=
*
* For more sample ad tags, see https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
*/
const DEFAULT_AD_TAG = "Your ad tag";
...
managerPromise = nonceLoader.loadNonceManager(request);
managerPromise
.then(function(manager) {
nonceManager = manager;
// Append the nonce to the ad tag URL.
makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
})
پیگیری رویدادهای پخش
در نهایت، شما نیاز به پیادهسازی کنترلکنندههای رویداد مختلف برای پخشکننده خود دارید. برای اهداف آزمایشی، میتوانید این موارد را به رویدادهای کلیک دکمه متصل کنید، اما در یک پیادهسازی واقعی، این رویدادها توسط رویدادهای مناسب پخشکننده فعال میشوند:
/**
* Informs PAL that an ad click has occurred. How this function is
* called will vary depending on your ad implementation.
*/
function sendAdClick() {
if (nonceManager) {
nonceManager.sendAdClick();
}
}
/**
* Handles the user touching on the video element, passing it to PAL.
* @param {!TouchEvent|!MouseEvent} touchEvent
*/
function onVideoTouch(touchEvent) {
if (nonceManager) {
nonceManager.sendAdTouch(touchEvent);
}
}
/** Informs PAL that playback has started. */
function sendPlaybackStart() {
if (nonceManager) {
nonceManager.sendPlaybackStart();
}
}
/** Informs PAL that playback has ended. */
function sendPlaybackEnd() {
if (nonceManager) {
nonceManager.sendPlaybackEnd();
}
}
در پیادهسازی شما، تابع sendPlaybackStart باید زمانی که جلسه پخش ویدیو آغاز میشود، فراخوانی شود. sendPlaybackEnd باید زمانی که جلسه پخش ویدیو به پایان میرسد، فراخوانی شود. sendAdClick باید هر بار که بیننده روی یک تبلیغ کلیک میکند، فراخوانی شود. sendAdTouch باید در هر تعامل لمسی با پخشکننده فراخوانی شود.
(اختیاری) ارسال سیگنالهای Google Ad Manager از طریق سرورهای تبلیغاتی شخص ثالث
درخواست سرور تبلیغات شخص ثالث برای Ad Manager را پیکربندی کنید.
سرور تبلیغاتی شخص ثالث خود را طوری پیکربندی کنید که nonce را در درخواست سرور به Ad Manager لحاظ کند. در اینجا مثالی از یک تگ تبلیغاتی که در داخل سرور تبلیغاتی شخص ثالث پیکربندی شده است، آورده شده است:
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
برای جزئیات بیشتر، به راهنمای پیادهسازی سمت سرور Google Ad Manager مراجعه کنید.
مدیر تبلیغات برای شناسایی مقدار nonce به دنبال givn= میگردد. سرور تبلیغات شخص ثالث باید از برخی ماکروهای خاص خود، مانند %%custom_key_for_google_nonce%% ، پشتیبانی کند و آن را با پارامتر جستجوی nonce که در مرحله قبل ارائه دادید، جایگزین کند. اطلاعات بیشتر در مورد نحوه انجام این کار باید در مستندات سرور تبلیغات شخص ثالث موجود باشد.
همین! اکنون باید پارامتر nonce را از PAL SDK، از طریق سرورهای واسطه خود و سپس به Google Ad Manager منتشر کرده باشید. این امر امکان کسب درآمد بهتر از طریق Google Ad Manager را فراهم میکند.