Contrôler le chargement et l'actualisation des annonces

Dans nos premiers exemples et exemples de concepts de base, le tag Google Publisher Tag la méthode display() de la bibliothèque GPT est utilisée. pour enregistrer et afficher un espace publicitaire. Cependant, il peut arriver préférable, voire nécessaire, pour séparer ces actions, afin de pour contrôler avec précision le chargement du contenu des annonces Par exemple, lorsque vous travaillez plate-forme de gestion du consentement ou demande de contenu d'annonce suite à la demande action.

Dans ce guide, nous allons découvrir les mécanismes fournis par GPT pour de contrôler le chargement du contenu des annonces et d'extraire de nouveaux contenus à la demande. Code complet de cet exemple sont disponibles dans la section dédiée aux requêtes basées sur des événements, page d'exemple.

Contrôler le chargement des annonces

Par défaut, la méthode display() se comporte comme suit : d'enregistrer, de demander et d'afficher un contenu publicitaire dans un espace publicitaire. Le bouton la demande et l'affichage de contenu d'annonce peuvent être désactivées PubAdsService.disableInitialLoad().

Lorsque le chargement initial est désactivé, les appels à display() n'enregistrent que l'espace publicitaire. Aucun contenu d'annonce ne sera chargé tant qu'une seconde action n'aura pas été effectuée. Cela vous permet pour contrôler avec précision les demandes d'annonces.

Pour éviter d'envoyer des demandes d'annonces involontaires, disableInitialLoad() doit être appelé avant d'activer le service et avant d'appeler display().

<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="description" content="Request GPT ads based on events." />
    <title>Event-based ad requests</title>
    <script
      async
      src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
      crossorigin="anonymous"
    ></script>
    <script>
      window.googletag = window.googletag || { cmd: [] };

      googletag.cmd.push(() => {
        // Define the ad slot.
        googletag
          .defineSlot("/6355419/Travel", [728, 90], "div-for-slot")
          .setTargeting("test", "event")
          .addService(googletag.pubads());

        // Disable initial load.
        // This prevents GPT from automatically fetching ads when display is called.
        googletag.pubads().disableInitialLoad();
        googletag.enableServices();
      });
    </script>
    <style></style>
  </head>
  <body>
    <div id="div-for-slot" style="width: 300px; height: 250px"></div>
    <script>
      googletag.cmd.push(() => {
        // Register the ad slot.
        // An ad will not be fetched until refresh is called.
        googletag.display("div-for-slot");

        // Register click event handler.
        document.getElementById("showAdButton").addEventListener("click", () => {
          googletag.cmd.push(() => {
            googletag.pubads().refresh();
          });
        });
      });
    </script>
  </body>
</html>

Dans cet exemple, le chargement initial est désactivé, ce qui garantit qu'aucune demande d'annonce n'est effectuée. De plus, aucun contenu d'annonce n'est affiché lorsque la méthode display() est appelée. L'emplacement est prêt accepter et afficher une annonce, mais aucune demande d'annonce n'est envoyée tant que l'espace n'est pas actualisées.

Actualiser

La méthode PubAdsService.refresh() permet de renseigner une des espaces publicitaires avec un nouveau contenu publicitaire. Cette méthode peut être utilisée sur les emplacements n'a pas encore chargé de contenu (en raison de disableInitialLoad()) ni à remplacer le le contenu d'un espace déjà rempli. Toutefois, seuls les emplacements enregistrées en appelant display() peuvent être actualisées.

<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="description" content="Request GPT ads based on events." />
    <title>Event-based ad requests</title>
    <script
      async
      src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
      crossorigin="anonymous"
    ></script>
    <script>
      window.googletag = window.googletag || { cmd: [] };

      googletag.cmd.push(() => {
        // Define the ad slot.
        googletag
          .defineSlot("/6355419/Travel", [728, 90], "div-for-slot")
          .setTargeting("test", "event")
          .addService(googletag.pubads());

        // Disable initial load.
        // This prevents GPT from automatically fetching ads when display is called.
        googletag.pubads().disableInitialLoad();
        googletag.enableServices();
      });
    </script>
    <style></style>
  </head>
  <body>
    <div id="div-for-slot" style="width: 300px; height: 250px"></div>
    <button id="showAdButton">Show/Refresh Ad</button>
    <script>
      googletag.cmd.push(() => {
        // Register the ad slot.
        // An ad will not be fetched until refresh is called.
        googletag.display("div-for-slot");

        // Register click event handler.
        document.getElementById("showAdButton").addEventListener("click", () => {
          googletag.cmd.push(() => {
            googletag.pubads().refresh();
          });
        });
      });
    </script>
  </body>
</html>

Dans cet exemple modifié, lorsqu'un utilisateur clique sur "Afficher/Actualiser l'annonce" le bouton La méthode refresh() est appelée. Cela déclenche une demande d'extraction du nouveau contenu de l'annonce et le charger dans l'emplacement enregistré, en écrasant tout contenu préexistant.

Notez que dans l'exemple ci-dessus, la méthode refresh() est appelée sans qui ont pour effet d'actualiser tous les espaces publicitaires enregistrés. Toutefois, il est également possible d'actualiser des espaces publicitaires spécifiques en transmettant un tableau emplacements à la méthode refresh(). Voir Actualiser les espaces publicitaires pour obtenir un exemple.

Bonnes pratiques

Voici quelques bonnes pratiques à suivre lorsque vous travaillez avec refresh() adhèrent.

  1. N'actualisez pas trop rapidement.

    Si vous actualisez trop rapidement les espaces publicitaires, vos demandes d'annonces risquent d'être limitées. Pour éviter cela, évitez d'actualiser les emplacements plus d'une fois tous les 30 jours. secondes.

  2. Ne pas appeler clear() inutilement

    Lors de l'actualisation d'un espace publicitaire, n'appelez pas PubAdsService.clear(). C'est inutile, car refresh() remplace le contenu de l'espace publicitaire spécifié, quel que soit si le contenu de l'annonce a déjà été chargé. Vous appelez clear() immédiatement avant d'appeler refresh() n'augmente que la durée pendant laquelle un emplacement vide est visible par l'utilisateur.

  3. Actualiser uniquement les espaces publicitaires visibles

    Utiliser refresh() pour remplacer le contenu d'espaces publicitaires qui ne sont jamais visibles peut réduire considérablement votre taux Active View. La ImpressionViewableEvent vous permet déterminer à quel moment un espace publicitaire est devenu visible, comme dans l'exemple ci-dessous.

    googletag.cmd.push(function() {
      var REFRESH_KEY = 'refresh';
      var REFRESH_VALUE = 'true';
    
      googletag.defineSlot('/6355419/Travel',[728, 90], 'div-for-slot')
          .setTargeting(REFRESH_KEY, REFRESH_VALUE)
          .setTargeting('test', 'event')
          .addService(googletag.pubads());
    
      // Number of seconds to wait after the slot becomes viewable.
      var SECONDS_TO_WAIT_AFTER_VIEWABILITY = 60;
    
      googletag.pubads().addEventListener('impressionViewable', function(event) {
        var slot = event.slot;
        if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) > -1) {
          setTimeout(function() {
            googletag.pubads().refresh([slot]);
          }, SECONDS_TO_WAIT_AFTER_VIEWABILITY * 1000);
        }
      });
    
      googletag.enableServices();
    });