สร้าง Nonce
"ผลกระทบ" เป็นสตริงที่เข้ารหัสเพียงสตริงเดียวซึ่ง PAL สร้างขึ้นโดยใช้ NonceLoader
PAL SDK กำหนดให้คำขอสตรีมใหม่แต่ละรายการต้องมีแท็ก
Nonce ที่สร้างขึ้น อย่างไรก็ตาม อาจมีการนำ nonces ไปใช้ซ้ำสำหรับคำขอโฆษณาหลายรายการภายใน
สตรีมเดียวกัน หากต้องการดูตัวอย่างแอปที่ใช้ PAL ในการสร้างค่า Nonce ให้ดาวน์โหลด
ตัวอย่าง HTML5 จาก GitHub
หากต้องการสร้าง Nonce โดยใช้ PAL SDK ให้สร้างไฟล์ HTML และเพิ่มพารามิเตอร์ ดังต่อไปนี้:
pal.html
<html>
<head></head>
<body>
<div id="placeholder-video"></div>
<button id="generate-nonce">Generate Nonce</button>
<script src="//imasdk.googleapis.com/pal/sdkloader/pal.js"></script>
<script src="pal.js"></script>
</body>
</html>
จากนั้นสร้างไฟล์ JavaScript และเพิ่มข้อมูลต่อไปนี้
pal.js
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', (e) => void onVideoTouch(e));
videoElement.addEventListener('touchstart', (e) => void onVideoTouch(e));
videoElement.addEventListener('play', () => {
if (!playbackStarted) {
sendPlaybackStart();
playbackStarted = true;
}
});
videoElement.addEventListener('ended', () => void sendPlaybackEnd());
videoElement.addEventListener('error', () => {
console.log("Video error: " + videoElement.error.message);
sendPlaybackEnd();
});
document.getElementById('generate-nonce')
.addEventListener('click', generateNonce);
// The default value for `allowStorage` is false, but can be
// changed once the appropriate consent has been gathered.
const consentSettings = new goog.pal.ConsentSettings();
consentSettings.allowStorage = getConsentToStorage();
nonceLoader = new goog.pal.NonceLoader(consentSettings);
}
/**
* 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.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/html5';
request.videoHeight = 480;
request.videoWidth = 640;
managerPromise = nonceLoader.loadNonceManager(request);
managerPromise
.then((manager) => {
nonceManager = manager;
console.log('Nonce generated: ' + manager.getNonce());
})
.catch((error) => {
console.log('Error generating nonce: ' + error);
});
}
init();
แนบ Nonce กับคำขอโฆษณา
หากต้องการใช้ค่า Nonce ที่สร้างขึ้น ให้เพิ่มแท็กโฆษณาด้วยพารามิเตอร์ givn
และพารามิเตอร์
ค่า Nonce ก่อนที่จะสร้างคำขอโฆษณา
pal.js
/**
* 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((manager) => {
nonceManager = manager;
console.log('Nonce generated: ' + manager.getNonce());
// Append the nonce to the ad tag URL.
makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
})
ติดตามเหตุการณ์การเล่น
สุดท้าย คุณต้องติดตั้งเครื่องจัดการเหตุการณ์ต่างๆ สำหรับโปรแกรมเล่น สำหรับ คุณสามารถแนบเหตุการณ์เหล่านี้กับเหตุการณ์การคลิกปุ่มได้ แต่จริงๆ แล้ว เหตุการณ์เหล่านี้จะเกิดขึ้นจากเหตุการณ์ของผู้เล่นที่เหมาะสม
pal.js
/**
* Informs PAL that an ad click has occurred. How this function is
* called will vary depending on your ad implementation.
*/
function sendAdClick() {
nonceManager?.sendAdClick();
}
/**
* Handles the user touching on the video element, passing it to PAL.
* @param {!TouchEvent|!MouseEvent} touchEvent
*/
function onVideoTouch(touchEvent) {
nonceManager?.sendAdTouch(touchEvent);
}
/** Informs PAL that playback has started. */
function sendPlaybackStart() {
nonceManager?.sendPlaybackStart();
}
/** Informs PAL that playback has ended. */
function sendPlaybackEnd() {
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
Ad Manager จะมองหา givn=
เพื่อระบุค่า Nonce โฆษณาของบุคคลที่สาม
เซิร์ฟเวอร์ต้องรองรับมาโครของตนเอง เช่น
%%custom_key_for_google_nonce%%
และแทนที่ด้วยพารามิเตอร์การค้นหา Nonce
ที่คุณให้ไว้ในขั้นตอนก่อนหน้า ข้อมูลเพิ่มเติมเกี่ยวกับวิธีดำเนินการนี้
มีอยู่ในเอกสารประกอบของเซิร์ฟเวอร์โฆษณาบุคคลที่สาม
เท่านี้ก็เรียบร้อย ตอนนี้คุณควรมีพารามิเตอร์ Nonce ที่แพร่กระจายจาก PAL SDK ผ่านเซิร์ฟเวอร์ตัวกลาง จากนั้นไปยัง Google Ad Manager วิธีนี้ช่วยให้ การสร้างรายได้ผ่าน Google Ad Manager ได้ดีขึ้น