Documentazione

Indice dei contenuti

Blocco preventivo dei cookie – Google Adsense e Ad Manager

Google AdSense

Riportiamo di seguito la procedura originale che prevede l’inclusione di due tag script:

<script type="text/javascript">
        google_ad_client = "ca-pub-00000000";
        google_ad_slot = "XXXXXXXXXX";
        google_ad_width = 728;
        google_ad_height = 90;
</script>
<script type="text/javascript" src="//pagead2.googlesyndication.com/pagead/show_ads.js"></script>

Per evitare che i banner Google AdSense registrino cookie prima del consenso è necessario apportare queste modifiche:

  1. Definire la funzione iubenda_adsense_unblock associandola alla callback onConsentGiven:
    <script>
            function iubenda_adsense_unblock(){
                var t = 1;
                $('._iub_cs_activate_google_ads').each(function() {
                    var banner = $(this);
                    setTimeout(function(){
                        var client = banner.data('client');
                        var slot = banner.data('slot');
                        var width = banner.data('width');
                        var height = banner.data('height');
                        var adsense_script = '<scr'+'ipt type="text/javascript">\n'
                                + 'google_ad_client = "'+client+'";\n'
                                + 'google_ad_slot = "'+slot+'";\n'
                                + 'google_ad_width = '+width+';\n'
                                + 'google_ad_height = '+height+';\n'
                                + '</scr'+'ipt>';
                        var script = document.createElement('script');
                        var ads = document.createElement('ads');
                        var w = document.write;
    
                        // override and replace with our version
                        document.write = (function(params)
                        {
                            // replace our placeholder with real ads
                            ads.innerHTML = params;
                            // put the old implementation back in place
                            // Aristos, add this check because called more than ones
                            //  and ends, with this symbol.
                            if(params.indexOf("</ins>") != -1)
                                document.write=w;
                        });
                        script.setAttribute('type', 'text/javascript');
                        script.setAttribute('src', 'http://pagead2.googlesyndication.com/pagead/show_ads.js');
                        script.setAttribute('async', 'async');
                        banner.html(adsense_script).append(ads).append(script);
                    }, t);
                    t += 200;
                });
            }
    
            if('callback' in _iub.csConfiguration) {
                _iub.csConfiguration.callback.onConsentGiven = iubenda_adsense_unblock;
            } else {
                _iub.csConfiguration.callback = {};
                _iub.csConfiguration.callback.onConsentGiven = iubenda_adsense_unblock;
            }
        </script>
        
        
    

    È consigliabile inserire il codice appena riportato subito dopo la configurazione della iubenda Cookie Solution.

     

  2. Creare un tag div per ogni banner, trasponendo i parametri su attributi di tipo data- e inserendoci la classe _iub_cs_activate_google_ads:

<div style="width: 728px;height:90px;" class="_iub_cs_activate_google_ads"
         data-client="ca-pub-00000000"
         data-slot="XXXXXXXXXX"
         data-width="728"
         data-height="90">
</div>

Google Ad Manager

Affinché Google Ad Manager (evoluzione di DFP, DoubleClick for Publishers) possa installare cookie solo dopo la raccolta del consenso dell’utente, bisogna adottare uno dei metodi descritti in quest’articolo per far sì che la iubenda Cookie Solution possa interagire con Google Ad Manager, in particolare bloccandone il tracciamento quando il cookie di preferenza di iubenda non è presente nel browser dell’utente.

È possibile scegliere uno dei 3 metodi di integrazione disponibili, a seconda della versione del codice Google Ad Manager utilizzata.

Attenzione

I metodi proposti per i codici “asynchronous” e “synchronous” funzionano solamente per le creatività fornite direttamente da Google Ad Manager.

Metodo 1 – Codice “asynchronous”

A seguire i codici “asynchronous” prima e dopo l’aggiunta dello script di iubenda.

Prima (asynchronous)

  • Script per la configurazione di Google Ad Manager:

Dopo (asynchronous)

Modifiche necessarie alla configurazione di Google Ad Manager per il blocco dei cookie:

  1. Definisci la funzione isConsentGiven per il controllo dei cookie:
    <script type='text/javascript'>
          function isConsentGiven() {
              if('consentIsGiven' in window && (consentIsGiven === true || consentIsGiven === false)) return consentIsGiven;
              if(!('_iub' in window && 'csConfiguration' in _iub)) return false;
              var siteId = _iub.csConfiguration.siteId || '';
              var cookiePolicyId = _iub.csConfiguration.cookiePolicyId || '';
              var cs = document.cookie.split(';');
              var consentIsGiven = false;
              for (var i = 0; i < cs.length; i++) {
                  while (cs[i].charAt(0) == ' ') cs[i] = cs[i].substring(1);
                  if(cs[i].indexOf('_iub_cs-s'+ siteId) == 0||cs[i].indexOf('_iub_cs-'+ cookiePolicyId) == 0) {
                      consentIsGiven = true;
                      break;
                  }
              }
              window.consentIsGiven = consentIsGiven;
              return consentIsGiven;
          }
        </script>
    

     

  2. Aggiungi il controllo isConsentGiven allo script Google Ad Manager. isConsentGiven stabilirà se installare o meno i cookie:

<script type="text/javascript">
          var googletag = googletag || {};
          googletag.cmd = googletag.cmd || [];
          (function () {
              var gads = document.createElement("script");
              gads.async = true;
              gads.type = "text/javascript";
              var useSSL = "https:" == document.location.protocol;
              gads.src = (useSSL ? "https:" : "http:") + "//www.googletagservices.com/tag/js/gpt.js";
              var node = document.getElementsByTagName("script")[0];
              node.parentNode.insertBefore(gads, node);
          })();
</script>
<script>
    googletag.cmd.push(function () {
        if(isConsentGiven())
            googletag.pubads().setCookieOptions(0);
        else
            googletag.pubads().setCookieOptions(1);
        googletag.defineSlot('/1234/travel', [728,90], "div-gpt-ad-123456789-0").addService(googletag.pubads());
        googletag.pubads().enableSyncRendering();
        googletag.enableServices();
    });
</script>
  • Aggiungi gli elementi dei banner Google Ad Manager senza nessuna alterazione:

  • <div id="div-gpt-ad-123456789-0" style="width: width; height: height;">
          <script type="text/javascript">
              googletag.cmd.push(function () {
                  googletag.display("div-gpt-ad-123456789-0");
              });
          </script>
    </div>
    

    La porzione di codice con la funzione isConsentGiven va inserita prima dello script Google Ad Manager e preferibilmente dopo il codice che inizializza la iubenda cookie solution.

    Metodo 2 – Codice “synchronous”

    A seguire i codici “synchronous” prima e dopo l’aggiunta dello script di iubenda.

    Prima (synchronous)

    • Script per la configurazione di Google Ad Manager:
      <script type="text/javascript">
                (function() {
                    var useSSL = 'https:' == document.location.protocol;
                    var src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
                    document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
                })();
      </script>
      <script type="text/javascript">
                    googletag.pubads().set("adsense_background_color", "FFFFFF");
      </script>
      <script>
          googletag.defineSlot("/1234/travel/asia/food", [728, 90], "div-gpt-ad-123456789-0")
              .addService(googletag.pubads())
              .setTargeting("interests", ["sports", "music", "movies"]);
         googletag.pubads().setTargeting("topic", "basketball");
         googletag.pubads().enableSingleRequest();
         googletag.enableServices();
      </script>
      

       

    • I singoli banner Google Ad Manager:

    <div id="div-gpt-ad-123456789-0" style="width: width; height: height;">
          <script type="text/javascript">
                  googletag.display("div-gpt-ad-123456789-0");
          </script>
        </div>
    

    Dopo (synchronous)

    Modifiche necessarie alla configurazione di Google Ad Manager per il blocco dei cookie:

    1. Definisci la funzione isConsentGiven per il controllo dei cookie:
      <script type='text/javascript'>
            function isConsentGiven() {
                if('consentIsGiven' in window && (consentIsGiven === true || consentIsGiven === false)) return consentIsGiven;
                if(!('_iub' in window && 'csConfiguration' in _iub)) return false;
                var siteId = _iub.csConfiguration.siteId || '';
                var cookiePolicyId = _iub.csConfiguration.cookiePolicyId || '';
                var cs = document.cookie.split(';');
                var consentIsGiven = false;
                for (var i = 0; i < cs.length; i++) {
                    while (cs[i].charAt(0) == ' ') cs[i] = cs[i].substring(1);
                    if(cs[i].indexOf('_iub_cs-s'+ siteId) == 0||cs[i].indexOf('_iub_cs-'+ cookiePolicyId) == 0) {
                        consentIsGiven = true;
                        break;
                    }
                }
                window.consentIsGiven = consentIsGiven;
                return consentIsGiven;
            }
          </script>
      

       

    2. Aggiungi il controllo isConsentGiven allo script Google Ad Manager. isConsentGiven stabilirà se installare o meno i cookie:

    <script type="text/javascript">
              (function() {
                  var useSSL = 'https:' == document.location.protocol;
                  var src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
                  document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
              })();
    </script>
    <script type="text/javascript">
                  googletag.pubads().set("adsense_background_color", "FFFFFF");
    </script>
    <script>
        if(isConsentGiven())
             googletag.pubads().setCookieOptions(0);
        else
             googletag.pubads().setCookieOptions(1);
        googletag.defineSlot("/1234/travel/asia/food", [728, 90], "div-gpt-ad-123456789-0")
            .addService(googletag.pubads())
            .setTargeting("interests", ["sports", "music", "movies"]);
       googletag.pubads().setTargeting("topic", "basketball");
       googletag.pubads().enableSingleRequest();
       googletag.enableServices();
    </script>
    
  • I singoli banner Google Ad Manager senza nessuna alterazione:

  • <div id="div-gpt-ad-123456789-0" style="width: width; height: height;">
          <script type="text/javascript">
                  googletag.display("div-gpt-ad-123456789-0");
          </script>
    </div>
    

    Anche in questo caso il codice contenente la funzione isConsentGiven va inserito prima di Google Ad Manager, e preferibilmente dopo lo script di iubenda.

    Metodo 3

    A seguire gli script da utilizzare se le creatività provengono da servizi esterni a Google Ad Manager.

    Codice senza modifiche

    • Inclusione dello script Google Ad Manager:

    <script type="text/javascript">
              var googletag = googletag || {};
              googletag.cmd = googletag.cmd || [];
              (function() {
                  var gads = document.createElement('script');
                  gads.async = true;
                  gads.type = 'text/javascript';
                  var useSSL = 'https:' == document.location.protocol;
                  gads.src = (useSSL ? 'https:' : 'http:') +
                          '//www.googletagservices.com/tag/js/gpt.js';
                  var node = document.getElementsByTagName('script')[0];
                  node.parentNode.insertBefore(gads, node);
              })();
          </script>
          <script type="text/javascript">
              googletag.cmd.push(function () {
                  googletag.pubads().set("adsense_background_color", "FFFFFF");
              });
          </script>
          <script>
              googletag.cmd.push(function() {
                  googletag.defineSlot('/1010125/Prontoimprese/Ros/300x250Top-ProntoImprese-Ros', [[300, 250], [300, 600]], 'div-gpt-ad-1330418177496-1').addService(googletag.pubads());
                  googletag.pubads().enableSingleRequest();
                  googletag.enableServices();
              });
          </script>
    
  • I singoli banner Google Ad Manager:

  • <div id="div-gpt-ad-1330418177496-1">
          <script  type="text/javascript">
              googletag.cmd.push(function () {
                  googletag.display("div-gpt-ad-1330418177496-1");
              });
          </script>
    </div>
    

    Modifiche necessarie al corretto funzionamento della Cookie Solution

    1. Aggiungi la classe _iub_cs_activate agli script di Google Ad Manager:

    <script type="text/plain" class="_iub_cs_activate">
              var googletag = googletag || {};
              googletag.cmd = googletag.cmd || [];
              (function() {
                  var gads = document.createElement('script');
                  gads.async = true;
                  gads.type = 'text/javascript';
                  var useSSL = 'https:' == document.location.protocol;
                  gads.src = (useSSL ? 'https:' : 'http:') +
                          '//www.googletagservices.com/tag/js/gpt.js';
                  var node = document.getElementsByTagName('script')[0];
                  node.parentNode.insertBefore(gads, node);
              })();
          </script>
          <script type="text/plain" class="_iub_cs_activate">
              googletag.cmd.push(function () {
                  googletag.pubads().set("adsense_background_color", "FFFFFF");
              });
          </script>
          <script type="text/plain" class="_iub_cs_activate">
            googletag.cmd.push(function() {
                  googletag.defineSlot('/1010125/Prontoimprese/Ros/300x250Top-ProntoImprese-Ros', [[300, 250], [300, 600]], 'div-gpt-ad-1330418177496-1').addService(googletag.pubads());
                  googletag.pubads().enableSingleRequest();
                  googletag.enableServices();
                });
          </script>
    
  • Aggiungi ad ogni banner Google Ad Manager la classe _iub_cs_activate-inline:

  • <div id="div-gpt-ad-1330418177496-1" style="width: 728px; height: 90px">
    
          <script  type="text/plain" class="_iub_cs_activate-inline">
              googletag.cmd.push(function () {
                  googletag.display("div-gpt-ad-1330418177496-1");
              });
          </script>
    
        </div>
    

    Leggi anche