الخطوات الأولى

إنشاء رقم Nonce

"نقطة غير معتادة" هي سلسلة مشفّرة واحدة يتم إنشاؤها بواسطة PAL باستخدام NonceLoader. تتطلّب حزمة PAL SDK أن يقترن كل طلب بث جديد بحزمة تم إنشاء nonce. ومع ذلك، يمكن إعادة استخدام nonces في طلبات الإعلان المتعددة ضمن البث نفسه. للاطّلاع على نموذج تطبيق يستخدم PAL لإنشاء رقم غير محدَّد، يُرجى تنزيل مثال HTML5 من GitHub.

لإنشاء رقم غير أساسي باستخدام حزمة تطوير البرامج (SDK) لنظام التشغيل PAL، أنشئ ملف 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();

أرفِق رقمك الخاص بطلب الإعلان.

لاستخدام القيمة التي تم إنشاؤها، أضِف علامة الإعلان بمَعلمة givn غير القيمة، قبل إجراء طلبات الإعلان.

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" من خلال خوادم الإعلانات التابعة لجهات خارجية

اضبط طلب خادم الإعلانات التابع لجهة خارجية في "مدير إعلانات Google".

يجب إعداد خادم الإعلانات التابع لجهة خارجية لتضمين nonce في خادم الإعلانات الخاص بالخادم المرسَل إلى "مدير الإعلانات" في ما يلي مثال على علامة إعلان تم ضبطها داخل خادم إعلانات الجهة الخارجية:

'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'

لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة التنفيذ من جهة الخادم في "مدير إعلانات Google". الدليل.

يبحث "مدير إعلانات Google" عن givn= لتحديد القيمة غير الناتجة. إعلان الجهة الخارجية خادم إلى دعم بعض وحدات الماكرو الخاصة به، مثل %%custom_key_for_google_nonce%%، واستبداله بمَعلمة طلب البحث nonce التي قدمتها في الخطوة السابقة. مزيد من المعلومات حول كيفية تحقيق ذلك يجب أن يكون متاحًا في مستندات خادم إعلانات الجهة الخارجية.

هذا كل شيء! يُفترض أن يكون لديك الآن المعلمة nonce التي تم نشرها من PAL SDK، من خلال الخوادم الوسيطة، ثم إلى "مدير إعلانات Google". وهذا يمكّن تحقيق الربح بشكل أفضل من خلال "مدير إعلانات Google"