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 à une demande action.

Dans ce guide, nous allons explorer les mécanismes fournis par GPT pour contrôler le chargement du contenu des annonces et extraire de nouveaux contenus d'annonces à la demande. Vous trouverez le code complet de cet exemple sur la page d'exemple des requêtes basées sur les événements.

Contrôler le chargement des annonces

Par défaut, le comportement de la méthode display() consiste à enregistrer, à demander et à afficher le contenu de l'annonce dans un emplacement publicitaire. La demande et l'affichage automatiques du contenu des annonces peuvent être désactivés à l'aide de la méthode 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 deuxième 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");
      });
    </script>
  </body>
</html>

Dans cet exemple, le chargement initial est désactivé pour s'assurer qu'aucune demande d'annonce n'est effectuée et qu'aucun contenu d'annonce n'est affiché lorsque display() est appelé. L'emplacement est prêt à accepter et à afficher une annonce, mais une demande d'annonce ne sera pas envoyée tant que l'emplacement n'aura pas été actualisé.

Actualiser

La méthode PubAdsService.refresh() permet de renseigner un ou plusieurs emplacements avec un nouveau contenu publicitaire. Cette méthode peut être utilisée sur des emplacements qui n'ont pas encore chargé de contenu (en raison de disableInitialLoad()) ou pour remplacer le contenu d'un emplacement déjà renseigné. 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 précédent, 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 d'espaces à 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() respecté.

  1. N'actualisez pas trop rapidement.

    Si vous actualisez les emplacements publicitaires trop rapidement, 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. N'appelez pas clear() inutilement.

    Lors de l'actualisation d'un espace publicitaire, n'appelez pas PubAdsService.clear(). Ceci 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é. Appeler clear() immédiatement avant d'appeler refresh() ne fait qu'augmenter la durée pendant laquelle un emplacement vide est visible par l'utilisateur.

  3. Actualiser uniquement les espaces publicitaires visibles

    L'utilisation de refresh() pour remplacer le contenu des emplacements d'annonces qui ne sont jamais visibles peut considérablement réduire votre taux ActiveView. L'événement ImpressionViewableEvent permet de déterminer quand un emplacement d'annonce est devenu visible, comme illustré dans l'exemple suivant :

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