Quantcast Choice ile IAB TCF v2.0 için izne dayalı olarak kişiselleştirilmiş Adsense reklamları nasıl görüntülenir veya engellenir?

Aug 16 2020

Quantcast Choice'u web sitem için izin yönetimi platformu olarak seçtim. Ancak, temel çözümleriyle Google Adsense reklamları, ilgili satıcıya (Google) izin vermeden önce ziyaretçilere sunulmaya devam etmektedir. 2 günden beri Adsense'de bu sorunu onaylayan bir bildirim var ve 90 günlük bir ödemesiz dönemden sonra artık hiçbir reklam sunulmayacak. Hata mesajı: " 2.1a: Etiket veya SDK, CMP durumunun saplama, yükleme veya hata olması nedeniyle bir TC dizesi almıyor. "

Senaryolara hiç aşina değilim, ama görünüşe göre Quantcast Choice'un gerçekten çalışması için bazılarını kullanmam gerekiyor. Temel olarak şunları nasıl yapacağımı bilmem gerekiyor:

  • Google’a bir ziyaretçi rızası olmadan hiçbir Google reklamı sunmamak
  • izin alındıktan sonra kişiselleştirilmiş reklamlar yayınlayın
  • izin olmadan kişiselleştirilmemiş reklamlar yayınlayın

Şimdiye kadar öğrendiklerim:

Bir ziyaretçinin onayından önce, bu komut dosyasını herhangi bir reklam göstermemek için Google Adsense koduma ekleyebilirim:

<script>(adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=1;</script>

Şimdiye kadar sorun yok. Ancak, o zaman bir ziyaretçinin Google satıcısı için izin verip vermediğini öğrenebilirim. Google'ın TCF v2.0'daki satıcı kimliği 755'tir. Aşağıdaki kod ve metin karışımını Quantcast sayfalarından birinde buldum, ancak bunu nasıl kullanacağımı bilmiyorum. Bunu Quantcast Choice komut dosyası içindeki web sayfalarıma mı koymalıyım yoksa ...? (aşağıda bağlantı verilen kaynak)

{{QC - __cmpConsents.iabVendorConsentIds}} matches the regular expression (^|,)755(,|$).

Yani 755 kimliği bulunursa şunu aramalıyım:

(adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=0

ve 755 kimliği bulunmazsa şunu aramalıyım:

(adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=1
(adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=0

Ama bu "aramaları" nasıl yaparım?

Bu yüzden izlenecek adımları anladığımı düşünüyorum, sadece bu adımları nasıl uygulayacağımı ve noktaları nasıl birleştireceğimi bilmiyorum. Herhangi bir yardım çok takdir edilecektir!

Kullandığım kaynaklar:

  • https://support.google.com/adsense/answer/9042142
  • https://help.quantcast.com/hc/en-us/articles/360051794434

Yapmak istediğim şeyi yapıyor gibi görünen bir web sitesi örneği: carscoops.com

Yanıtlar

3 quick Sep 18 2020 at 07:52

Çok basit bir çözüm öneririm. TCF 2.0 ile, belirli bir izne bağlı olarak Adsense parametrelerini (kişiselleştirilmiş reklamlar vb.) Manuel olarak yapılandırmanız gerekmez. Sadece garanti etmelisiniz, izin başarıyla yüklendikten sonra reklamları yüklemeye başlarsınız. Adsense kitaplığı, izin dizelerini otomatik olarak okur ve belirli bir izne göre reklamları görüntüler.

Quantcast Choices ile Adsense entegrasyonu için örnek kod:

<!-- Quantcast Choice. Consent Manager Tag v2.0 (for TCF 2.0) -->
...
<!-- End Quantcast Choice. Consent Manager Tag v2.0 (for TCF 2.0) -->

<script>
__tcfapi('addEventListener', 2, function(tcData, success) {
    if (success) {
        if (tcData.eventStatus == 'useractioncomplete' || tcData.eventStatus == 'tcloaded') {
            var hasStoreOnDeviceConsent = tcData.purpose.consents[1] || false;

            if (hasStoreOnDeviceConsent) {
                var adsbygoogle_script = document.createElement('script');
                adsbygoogle_script.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
                document.head.appendChild(adsbygoogle_script);
            }
        }
    }
});
</script>
2 RyanBaron Aug 17 2020 at 17:04

Herkesin anlamasına yardımcı olmak için, 2.1a Google IAB TCF v2 Hatası büyük olasılıkla Google Reklam Ürün Etiketlerinin bir kullanıcı izni ayarlanmadan / oluşturulmadan önce web sitesine eklenmesinden kaynaklanmaktadır. Bu kısa bir video , beklenen davranışı gösterir, reklamlar bir kullanıcı izin verene kadar yüklenmez. Bir kullanıcı onayını seçmeden önce arka planda reklamların yüklendiğini görürseniz, 2.1a hataları alıyorsunuzdur çünkü izin beklemeden Google etiketleri ekliyorsunuz demektir.

Bunun çözümü, Google Reklamcılık Ürün etiketlerini sitenize nasıl eklediğinize bağlı olarak değişecektir, ancak umarız aşağıdaki bilgiler ve Adsense örneği yardımcı olur.

Google Etiket Yöneticisi

Sitenize Seçim ve Google etiketleri eklemek için Google Etiket Yöneticisi kullanıyorsanız buradaki kılavuzu kullanabilirsiniz. https://help.quantcast.com/hc/en-us/articles/360051794434 ve https://help.quantcast.com/hc/en-us/articles/360051794434-TCF-v2-GTM-Implementation-Guide-IAB-Vendor-Tag-Blocking referans olarak.

Adsense Özel Örnek

Örnek almak https://support.google.com/adsense/answer/9042142 Quantcast Choice TCF v2.0'dan uygun onay sinyallerini beklemek için örneği bu şekilde yeniden çalışmanız gerektiğine inanıyorum.

Bunu tam olarak test etme şansım olmadı, bu nedenle kodla ilgili herhangi bir sorununuz olursa lütfen bize bildirin, örneği güncelleyeceğim.

GÜNCELLENMİŞ BİR SÜRÜM İÇİN BU KOD BLOKUNA BAKIN

<html>
  <head>
    <title>Your site title</title>
  </head>
  <body>

    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <script>
      // Initially pause adsbygoogle (wait for consent to unpause)
      (adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=1;
    </script>

    <script>
      ( function() {
        // Run this in an interval (every 0.1s) just in case we are still waiting for consent
        var cnt = 0;
        var consentSetInterval = setInterval(function(){
          cnt += 1;

          // Bail if we have not gotten a consent response after 60 seconds.
          if( cnt === 600 )
            clearInterval(consentSetInterval);

          if( typeof window.__tcfapi !== 'undefined' ) { // Check if window.__tcfapi has been set
            clearInterval( consentSetInterval );

            window.__tcfapi( 'addEventListener', 2, function( tcData,listenerSuccess ) {
              if ( listenerSuccess ) {
                if( tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete' ) {
                  if ( ! tcData.gdprApplies ) {

                    // GDPR DOES NOT APPLY, UnpauseAdRequests

                    // Set request non-personalized ads to false as GDPR does not apply.
                    (adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=0;

                    // Unpause ads, as GDPR does not apply.
                    (adsbygoogle = window.adsbygoogle || []).pauseAdRequests=0;

                  }
                  else {

                    // GDPR DOES APPLY

                    // Purpose 1 refers to the storage and/or access of information on a device.
                    var hasDeviceStorageAndAccessConsent = tcData.purpose.consents[1] || false;

                    // Google Requires Consent for Purpose 1
                    if (hasDeviceStorageAndAccessConsent) {
                      // GLOBAL VENDOR LIST - https://iabeurope.eu/vendor-list-tcf-v2-0/
                      // CHECK FOR GOOGLE ADVERTISING PRODUCTS CONSENT. (IAB Vendor ID 755)
                      var hasGoogleAdvertisingProductsConsent = tcData.vendor.consents[755] || false;

                      // Check if the user gave Google Advertising Products consent (iab vendor 755)
                      if(hasGoogleAdvertisingProductsConsent) {
                        var hasPersonalizedProfileConsent = tcData.purpose.consents[3] || false;
                        var hasPersonalizedAdsConsent = tcData.purpose.consents[4] || false;

                        // Check if have add personalization consent Purpose 3 and 4
                        if( hasPersonalizedAdsConsent && hasPersonalizedProfileConsent ) {
                          // Set request non-personalized ads to false.
                          (adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=0;
                        }
                        else {
                          // Set request non-personalized ads to true.
                          (adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=1;
                        }

                        // Unpause ads , the user has granted consent for purpose 1 and given google consent.
                        (adsbygoogle = window.adsbygoogle || []).pauseAdRequests=0;
                      }
                    }
                  }
                }
              }
            } );
          }
          cnt++;
        }, 100);
      })();
    </script>

    <!-- One test unit for GDPR -->
    <ins class="adsbygoogle"
         style="display:inline-block;width:970px;height:250px"
         data-ad-client="ca-pubxxx"
         data-ad-slot="slot_id">
    </ins>

    <!-- Another test unit for GDPR -->
    <ins class="adsbygoogle"
         style="display:inline-block;width:250px;height:250px"
         data-ad-client="ca-pubxxx"
         data-ad-slot="slot_id">
    </ins>

    <script>
      // This will trigger the ad request if ads were unpaused in the CMP consent check above.
      (adsbygoogle = window.adsbygoogle || []).push({});
    </script>

  </body>
</html>

Düzenleme: Yeni Güncellenmiş Sürüm Eklendi (18 Ağustos)


Bu, yukarıdakinden daha iyi bir versiyon olabilir. Bu yine test edilmemiştir, bu nedenle lütfen sorun yaşıyorsanız test edin ve geri bildirimde bulunun. Bu güncellenmiş sürümle temel farklar:
  1. Artık tcData.purpose.consents [3] ve tcData.purpose.consents [4] 'i kontrol etmiyoruz, bunun yerine kişiselleştirilmiş reklamları gösterme ve göstermeme arasında karar vermek için Google'a güveniyoruz.

  2. Eklemiyoruz https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.jsOnay verene kadar sayfaya, biz onay verene kadar istenmeyen çerezlerin eklenmesini engelliyoruz. Bu aynı zamanda (adsbygoogle = window.adsbygoogle || []). PauseAdRequests = 1; öğeler de

  <html>
    <head>
      <title>Your site title</title>
    </head>
    <body>
      <script>
        ( function() {
          var insertAdsByGoogleJs = function() {
            var element = document.createElement('script');
            var firstScript = document.getElementsByTagName('script')[0];
            var url = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
            element.async = true;
            element.type = 'text/javascript';
            element.src = url;
            firstScript.parentNode.insertBefore(element, firstScript);
          };
          // Run this in an interval (every 0.1s) just in case we are still waiting for consent
          var cnt = 0;
          var consentSetInterval = setInterval(function(){
            cnt += 1;
            // Bail if we have not gotten a consent response after 60 seconds.
            if( cnt === 600 )
              clearInterval(consentSetInterval);
            if( typeof window.__tcfapi !== 'undefined' ) { // Check if window.__tcfapi has been set
              clearInterval( consentSetInterval );
              window.__tcfapi( 'addEventListener', 2, function( tcData,listenerSuccess ) {
                if ( listenerSuccess ) {
                  if( tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete' ) {
                    if ( ! tcData.gdprApplies ) {
                      // GDPR DOES NOT APPLY
                      // Insert adsbygoogle.js onto the page.
                      insertAdsByGoogleJs();
                    }
                    else {
                      // GDPR DOES APPLY
                      // Purpose 1 refers to the storage and/or access of information on a device.
                      var hasDeviceStorageAndAccessConsent = tcData.purpose.consents[1] || false;
                      // Google Requires Consent for Purpose 1
                      if (hasDeviceStorageAndAccessConsent) {
                        // GLOBAL VENDOR LIST - https://iabeurope.eu/vendor-list-tcf-v2-0/
                        // CHECK FOR GOOGLE ADVERTISING PRODUCTS CONSENT. (IAB Vendor ID 755)
                        var hasGoogleAdvertisingProductsConsent = tcData.vendor.consents[755] || false;
                        // Check if the user gave Google Advertising Products consent (iab vendor 755)
                        if(hasGoogleAdvertisingProductsConsent) {
                          // Insert adsbygoogle.js onto the page.
                          insertAdsByGoogleJs();
                        }
                      }
                    }
                  }
                }
              } );
            }
            cnt++;
          }, 100);
        })();
      </script>
      <!-- One test unit for GDPR -->
      <ins class="adsbygoogle"
           style="display:inline-block;width:970px;height:250px"
           data-ad-client="ca-pubxxx"
           data-ad-slot="slot_id">
      </ins>
      <!-- Another test unit for GDPR -->
      <ins class="adsbygoogle"
           style="display:inline-block;width:250px;height:250px"
           data-ad-client="ca-pubxxx"
           data-ad-slot="slot_id">
      </ins>
      <script>
        // This will trigger the ad request if ads were unpaused in the CMP consent check above.
        (adsbygoogle = window.adsbygoogle || []).push({});
      </script>
    </body>
  </html>