Tek seferlik rastgele sayı oluşturmak üzere PAL kullanan örnek bir uygulama görmek için CTV'yi (Tizen) indirin şuradan bir örnek: GitHub'a gidin.
Bu kılavuzda PAL SDK'sı bir Samsung (Tizen) uygulamasına dahil edilmiştir. bir tek seferlik rastgele oluşturan olarak ve reklam gösterimlerini kaydeder.
Ö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'i kullanmaya başlama konulu bu videoyu izleyin.
Tek seferlik bir sayı oluşturun
"Tek seferlik", PAL tarafından NonceLoader kullanılarak oluşturulan tek bir şifrelenmiş dizedir.
PAL SDK'sı, her yeni akış isteğine yeni bir akış isteğinin eşlik etmesini gerektirir.
tek seferlik rastgele sayı. Ancak nonce'lar aynı aralıktaki birden fazla reklam isteği için yeniden kullanılabilir
görebilirsiniz.
Uygulamanız için bir HTML dosyası oluşturun. webapis.js bağımlılığını HTML dosyanıza ekleyin. PAL'ın çalışması için bu bağımlılığın olması gerekir. Daha fazla bilgi için Samsung WebApi dokümanlarına göz atın.
index.html dosyanıza CTV PAL SDK'sı için bir bağımlılık ekleyin.
webapis.js için komut dosyası etiketinden sonra komut dosyası etiketi. Aşağıdakilere göz atın
Örnek olarak index.html dosyasını kullanabilirsiniz.
<!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>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 beyanlarını 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 config.xml dosyası için aşağıdaki kod snippet'ini inceleyin:
<?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, tek seferlik bir sayı oluşturmak için bir JavaScript dosyası oluşturun. Bu adım PAL'yi içerir
NonceLoader oluşturma, NonceRequest oluşturma ve ardından
NonceLoader.loadNonceManager() kullanarak tek seferlik rastgele sayı isteniyor.
let videoElement;
let nonceLoader;
let managerPromise;
let nonceManager;
let storageConsent = true;
let playbackStarted = false;
/**
* A placeholder for the publisher's own method of obtaining user
* consent, either by integrating with a CMP or based on other
* methods the publisher chooses to handle storage consent.
* @return {boolean} Whether storage consent has been given.
*/
function getConsentToStorage() {
return storageConsent;
}
/**
* 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 `allowStorage` is false, but can be
// changed once the appropriate consent has been gathered.
const consentSettings = new goog.ctv.pal.ConsentSettings();
consentSettings.allowStorage = getConsentToStorage();
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 seferlik sayınızı reklam isteğine ekleme
Oluşturulan tek seferlik rastgele sayıyı kullanmak için reklam etiketinizi bir givn parametresi ve
tek seferlik rastgele sayısı değerini belirlemeniz gerekir.
/**
* 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şleyiciler uygulamanız gerekir. Örneğin, Bunu test amacıyla düğme tıklama etkinliklerine ekleyebilirsiniz, ancak uygulandığında bunlar uygun oynatıcı etkinlikleri tarafından 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. Video çekildikten sonra sendPlaybackEnd çağrılmalıdır
sona eriyor. sendAdClick,
İzleyici reklamı tıkladığında sendAdTouch, oynatıcıyla her dokunma etkileşimde çağrılmalıdır.
(İsteğe bağlı) Google Ad Manager sinyallerini üçüncü taraf reklam sunucuları aracılığıyla gönderme
Üçüncü taraf reklam sunucusunun Ad Manager isteğini yapılandırın.
Üçüncü taraf reklam sunucunuzu, sunucunun Ad Manager'a gönderdiği isteğe tek seferlik kimliği dahil edecek şekilde yapılandırın. Burada, üçüncü taraf reklam sunucusu:
'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, tek seferlik rastgele sayı değerini tanımlamak için givn= değerini arar. Üçüncü taraf reklamı
sunucunun kendine ait bir makroyu desteklemesi gerekir (örneğin,
%%custom_key_for_google_nonce%% ve bunu tek seferlik sorgu parametresiyle değiştirin
adımları gerçekleştirebilirsiniz. Bunun nasıl yapılacağı hakkında daha fazla bilgi
üçüncü taraf reklam sunucusunun dokümanlarında bulunmalıdır.
İşte bu kadar. Artık tek seferlik rastgele sayı parametresinin PAL SDK'sından yayılması gerekir. aracı sunucularınıza ve ardından Google Ad Manager'a gönderebilirsiniz. Bu sayede Google Ad Manager üzerinden daha iyi para kazanabilirsiniz.