क्वांटकास्ट चॉइस के साथ IAB TCF v2.0 के लिए सहमति के आधार पर वैयक्तिकृत Adsense विज्ञापन प्रदर्शित या ब्लॉक कैसे करें?

Aug 16 2020

मैंने अपनी वेबसाइट के लिए सहमति प्रबंधन मंच के रूप में क्वांटकास्ट च्वाइस चुना है। हालाँकि उनके मूल समाधान के साथ Google Adsense विज्ञापनों को अभी भी संबंधित विक्रेता (Google) के लिए अपनी सहमति देने से पहले आगंतुकों को परोसा जाता है। 2 दिनों से Adsense में एक नोटिस है जो इस मुद्दे की पुष्टि करता है और 90 दिनों की अनुग्रह अवधि के बाद अब कोई भी विज्ञापन नहीं दिया जाएगा। त्रुटि संदेश: " 2.1a: सीएमपी स्थिति ठूंठ, लोडिंग या त्रुटि के कारण टैग या एसडीके एक टीसी स्ट्रिंग प्राप्त नहीं कर रहा है। "

मैं लिपियों से बिल्कुल भी परिचित नहीं हूं, लेकिन ऐसा लगता है कि मुझे क्वांटकास्ट चॉइस बनाने के लिए कुछ का उपयोग करना होगा। मूल रूप से मुझे यह जानना होगा कि:

  • Google को विज़िटर की सहमति से पहले कोई भी Google विज्ञापन न दें
  • सहमति के बाद व्यक्तिगत विज्ञापन परोसें
  • बिना किसी सहमति के गैर-व्यक्तिगत विज्ञापन परोसें

मैंने अब तक क्या सीखा है:

किसी विज़िटर की सहमति से पहले, मैं कोई भी विज्ञापन न दिखाने के लिए इस स्क्रिप्ट को अपने Google Adsense कोड में जोड़ सकता हूं:

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

अब तक कोई समस्या नहीं। हालाँकि तब मुझे यह जानने में सक्षम होना चाहिए कि क्या किसी आगंतुक ने विक्रेता Google के लिए सहमति दी है। TCF v2.0 में Google का विक्रेता आईडी 755 है। मुझे क्वांटकास्ट पृष्ठों में से एक पर कोड और पाठ का निम्नलिखित मिश्रण मिला, लेकिन मुझे नहीं पता कि इसका उपयोग कैसे करना है। क्या मुझे इसे अपने वेबपेज पर क्वांटकास्ट चॉइस स्क्रिप्ट के भीतर रखना चाहिए या ...? (स्रोत नीचे लिंक किया गया है)

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

तो अगर आईडी 755 पाया जाता है, तो मुझे कॉल करना चाहिए:

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

और अगर आईडी 755 नहीं मिला है, तो मुझे कॉल करना चाहिए:

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

लेकिन मैं ये "कॉल" कैसे करूं?

इसलिए मुझे लगता है कि मैं अनुसरण करने के चरणों को समझता हूं, यह सिर्फ इतना है कि मुझे नहीं पता कि इन चरणों को कैसे लागू किया जाए और बिंदुओं को जोड़ा जाए। कोई भी सहायताकाफी प्रशंसनीय होगी!

मेरे द्वारा उपयोग किए गए स्रोत:

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

एक वेबसाइट का उदाहरण जो मुझे लगता है कि मैं क्या हासिल करना चाहता हूं: Carscoops.com

जवाब

3 quick Sep 18 2020 at 07:52

मैं एक बहुत सरल उपाय सुझाऊंगा। TCF 2.0 के साथ, आपको किसी दिए गए सहमति के आधार पर Adsense पैरामीटर (व्यक्तिगत विज्ञापन आदि) को मैन्युअल रूप से कॉन्फ़िगर करने की आवश्यकता नहीं है। आपको बस गारंटी देनी है, सहमति सफलतापूर्वक लोड होने के बाद आप विज्ञापनों को लोड करना शुरू करते हैं। Adsense Library सहमति के तार को स्वचालित रूप से पढ़ते हैं और किसी दिए गए सहमति के अनुसार विज्ञापन प्रदर्शित करते हैं।

एकीकरण कोड के लिए उदाहरण कोड

<!-- 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

बस हर किसी को समझने में मदद करने के लिए, 2.1a Google IAB TCF v2 त्रुटि Google विज्ञापन उत्पाद टैग के कारण संभव है कि उपयोगकर्ता द्वारा सहमति / स्थापित होने से पहले वेबसाइट पर जोड़ा जा रहा है। यह एक छोटा वीडियो अपेक्षित व्यवहार दिखाता है, जब तक कोई उपयोगकर्ता सहमति नहीं देता तब तक विज्ञापन लोड नहीं होते। यदि आप किसी उपयोगकर्ता द्वारा अपनी सहमति का चयन करने से पहले पृष्ठभूमि में विज्ञापन लोड करते हुए देखते हैं तो आपको 2.1a त्रुटियां मिल रही हैं क्योंकि आप सहमति के लिए प्रतीक्षा किए बिना Google टैग जोड़ रहे हैं।

इसका समाधान इस बात पर निर्भर करेगा कि आप अपनी साइट पर Google विज्ञापन उत्पाद टैग कैसे जोड़ रहे हैं, लेकिन उम्मीद है कि नीचे दी गई जानकारी और Adsense उदाहरण मदद करेंगे।

Google टैग प्रबंधक

यदि आप अपनी साइट पर चॉइस और Google टैग जोड़ने के लिए Google टैग प्रबंधक का उपयोग कर रहे हैं, तो आप यहां गाइड का उपयोग कर सकते हैं https://help.quantcast.com/hc/en-us/articles/360051794434 तथा https://help.quantcast.com/hc/en-us/articles/360051794434-TCF-v2-GTM-Implementation-Guide-IAB-Vendor-Tag-Blocking संदर्भ के रूप में।

Adsense विशिष्ट उदाहरण

से उदाहरण लेते हुए https://support.google.com/adsense/answer/9042142 मेरा मानना ​​है कि इस तरह आपको क्वांटकास्ट च्वाइस TCF v2.0 से उचित सहमति के संकेतों की प्रतीक्षा करने के लिए उदाहरण को फिर से बनाने की आवश्यकता होगी।

मुझे इसे पूरी तरह से परखने का मौका नहीं मिला है इसलिए कृपया मुझे बताएं कि क्या आपके पास कोड के साथ कोई समस्या है और मैं उदाहरण को अपडेट करूंगा।

एक उन्नत संस्करणों के लिए इस कोड को देखें

<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>

संपादित करें: नया अपडेट किया गया संस्करण जोड़ा गया (अगस्त 18)


यह उपरोक्त से बेहतर संस्करण हो सकता है। यह फिर से अप्रयुक्त है, इसलिए यदि आप समस्या कर रहे हैं तो कृपया परीक्षण करें और प्रतिक्रिया दें। इस अद्यतन संस्करण के साथ मुख्य अंतर यह है:
  1. हम अब tcData.purpose.consents [3] और tcData.purpose.consents [4] की जाँच नहीं कर रहे हैं, इसके बजाय हम Google पर भरोसा कर रहे हैं कि वे व्यक्तिगत विज्ञापन दिखाने के बीच का फैसला करें या नहीं।

  2. हम नहीं जोड़ते https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.jsजब तक हमारी सहमति न हो, तब तक किसी भी अवांछित कुकीज़ को जोड़ने से रोकें जब तक कि हम यह सुनिश्चित न कर लें कि हमारे पास ऐसा करने के लिए सहमति है। इसने हमें (adsbygoogle = window.adsbygoogle || []) को हटाने की अनुमति भी दी। PauseAdRequests = 1; साथ ही आइटम

  <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>