Inizia

Genera un nonce

Un "nonce" è una singola stringa criptata generata da PAL utilizzando NonceLoader. L'SDK PAL richiede che ogni nuova richiesta di streaming sia accompagnata da un nuovo nonce generato. Tuttavia, i nonce possono essere riutilizzati per più richieste di annunci in lo stesso flusso. Per visualizzare un'app di esempio che utilizza PAL per generare un nonce, scarica l'esempio HTML5 tratto da GitHub.

Per generare un nonce utilizzando l'SDK PAL, crea un file HTML e aggiungi il seguenti:

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>

Quindi, crea un file JavaScript e aggiungi quanto segue:

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();

Allega il tuo nonce alla richiesta di annuncio

Per utilizzare il nonce generato, aggiungi al tag annuncio un parametro givn e la macro nonce prima di effettuare le richieste di annunci.

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);
      })

Monitorare gli eventi di riproduzione

Infine, devi implementare vari gestori di eventi per il player. Per per scopi di test, puoi collegarli agli eventi di clic sui pulsanti, ma in realtà vengono attivati dagli eventi del player appropriati:

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();
}

Nella tua implementazione, sendPlaybackStart deve essere chiamato una volta che il tuo video inizia la sessione di riproduzione. sendPlaybackEnd dovrebbe essere chiamato quando il tuo video la sessione di riproduzione al termine. sendAdClick deve essere chiamato ogni volta che Uno spettatore fa clic su un annuncio. sendAdTouch deve essere chiamata a ogni interazione touch con il player.

(Facoltativo) Inviare indicatori di Google Ad Manager tramite ad server di terze parti

Configura la richiesta dell'ad server di terze parti per Ad Manager.

Configura l'ad server di terze parti in modo da includere il nonce nel richiesta ad Ad Manager. Di seguito è riportato un esempio di un tag annuncio configurato all'interno della ad server di terze parti:

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

Per ulteriori dettagli, consulta Implementazione lato server di Google Ad Manager .

Ad Manager cerca givn= per identificare il valore nonce. L'annuncio di terze parti server deve supportare alcune macro, come %%custom_key_for_google_nonce%% e sostituiscilo con il parametro di query nonce che hai fornito nel passaggio precedente. Ulteriori informazioni su come eseguire questa operazione devono essere disponibili nella documentazione dell'ad server di terze parti.

È tutto. A questo punto dovresti propagare il parametro nonce dall'SDK PAL. tramite i server intermediari e poi a Google Ad Manager. Ciò consente una migliore monetizzazione tramite Google Ad Manager.