PAL'yi kullanarak tek seferlik rastgele sayı oluşturan örnek bir uygulamayı görmek için GitHub'dan CTV Samsung Tizen örneğini indirin.
Bu kılavuzda, PAL SDK'sını bir Samsung Tizen uygulamasına dahil etme, tek seferlik rastgele sayı isteme ve reklam gösterimlerini kaydetme işlemleri açıklanmaktadır.
Ön koşullar
Bu kılavuza başlamadan önce temel bir Tizen uygulaması oluşturmanız gerekir. Uygulamayı ayarlamak için Tizen IDE'yi kullanabilirsiniz. Daha fazla bilgi için Tizen'ı kullanmaya başlama ile ilgili bu videoya göz atın.
Nonce oluşturma
"Nonce", PAL tarafından NonceLoader kullanılarak oluşturulan tek bir şifrelenmiş dizedir.
PAL SDK'sı, her yeni yayın isteğinin yeni oluşturulmuş bir nonce ile birlikte gönderilmesini gerektirir. Ancak, aynı yayın içindeki birden fazla reklam isteği için nonce'lar yeniden kullanılabilir.
Uygulamanız için bir HTML dosyası oluşturun. HTML dosyanıza webapis.js bağımlılığını ekleyin. PAL'ın çalışması için bu bağımlılık gerekir. Daha fazla bilgi için Samsung WebApi dokümanlarına göz atın.
CTV PAL SDK'sı için index.html dosyanıza bir bağımlılık ekleyin. webapis.js için komut dosyası etiketinden sonra komut dosyası etiketini yükleyin. Örnek için aşağıdaki
index.html dosyasına bakın.
<!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 spam sinyallerinin düzgün çalışması için belirli Tizen ayrıcalıkları gerekir. Aşağıdaki ayrıcalık bildirimlerini içeren bir config.xml dosyası oluşturun:
"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"
Örnek bir config.xml dosyası için aşağıdaki kod snippet'ine bakın:
<?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>
Ardından, nonce oluşturmak için bir JavaScript dosyası oluşturun. Bu adımda, NonceLoader oluşturma, NonceRequest oluşturma ve ardından NonceLoader.loadNonceManager() kullanarak nonce isteme gibi PAL iş akışı yer alır.
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();
});
Tek kullanımlık sayınızı reklam isteğine ekleme
Oluşturulan nonce'u kullanmak için reklam isteklerinizi yapmadan önce reklam etiketinize givn parametresini ve nonce değerini ekleyin.
/**
* 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);
})
Oynatma etkinliklerini izleme
Son olarak, oynatıcınız için çeşitli etkinlik işleyicileri uygulamanız gerekir. Test amacıyla bunları düğme tıklama etkinliklerine ekleyebilirsiniz ancak gerçek bir uygulamada bunlar uygun oynatıcı etkinlikleriyle tetiklenir:
/**
* 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();
}
}
Uygulamanızda, video oynatma oturumunuz başladıktan sonra sendPlaybackStart çağrılmalıdır. sendPlaybackEnd, video oynatma oturumunuz sona erdiğinde çağrılmalıdır. sendAdClick, izleyici bir reklamı her tıkladığında çağrılmalıdır. sendAdTouch, oynatıcıyla her dokunma etkileşiminde çağrılmalıdır.
(İsteğe bağlı) Google Ad Manager sinyallerini üçüncü taraf reklam sunucuları üzerinden gönderme
Üçüncü taraf reklam sunucusunun Ad Manager isteğini yapılandırın.
Üçüncü taraf reklam sunucunuzu, sunucunun Ad Manager'a yaptığı isteğe tek seferlik rastgele sayıyı dahil edecek şekilde yapılandırın. Üçüncü taraf reklam sunucusunda yapılandırılmış bir reklam etiketi örneği aşağıda verilmiştir:
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
Daha fazla bilgi için Google Ad Manager sunucu tarafı uygulama kılavuzuna bakın.
Ad Manager, nonce değerini belirlemek için givn= karakterini arar. Üçüncü taraf reklam sunucusunun, %%custom_key_for_google_nonce%% gibi kendi makrolarından bazılarını desteklemesi ve bunları önceki adımda sağladığınız nonce sorgu parametresiyle değiştirmesi gerekir. Bu işlemin nasıl yapılacağıyla ilgili daha fazla bilgiyi üçüncü taraf reklam sunucusunun belgelerinde bulabilirsiniz.
İşte bu kadar. Artık tek seferlik rastgele sayı parametresi PAL SDK'sından, aracı sunucularınızdan ve ardından Google Ad Manager'a iletilmelidir. Bu sayede Google Ad Manager üzerinden daha iyi para kazanma olanağı elde edebilirsiniz.