Gizlilik ve Mesajlaşma JavaScript API'sı

Giriş

Bu API, Gizlilik ve mesajlaşma sekmesinde sunulan mesajlarla etkileşim kurmak için araçlar sağlar. Bu özellikle şunları yapabilirsiniz:

  • belirli bir kullanıcı için mesajlaşmayı engelle
  • Kullanıcının reklam engelleme durumunu sorgulama
  • kullanıcının iznini iptal etmesine izin verme (geçerliyse)

Bu araçları, sektör standardı bazı protokolleri kullanarak kullanıcı izni almak için de kullanabilirsiniz:

Bu durumlarda, izin durumu bu API'ler aracılığıyla iletilir.

Bu kullanıcı mesajlaşma işlevini sitenizde birkaç şekilde dağıtabilirsiniz:

  1. Çoğu durumda yeniden etiketleme yapmanız gerekmez. Mesaj ilgili üründe yayınlandıktan sonra mevcut Google Yayıncı Etiketiniz veya AdSense etiketiniz kullanıcı mesajlarını dağıtır.
  2. Reklam engelleme iptali mesajını kullanıyorsanız reklam engelleme etiketini sayfanıza açıkça eklemeniz gerekir. Daha fazla bilgi için Ad Manager ve AdSense etiketleme talimatlarına bakın.

googlefc, kullanıcı mesajlaşma işlevinin Window JavaScript üzerindeki API'si için kullandığı genel ad alanıdır.

Saha Özetleri

Ad Tür Tanım
googlefc.controlledMessagingFunction function(!Object) Herhangi bir mesajlaşmanın gerçekleştirilip gerçekleştirilmeyeceğini belirleyen işlev. Bu işlev tüm mesaj türleri için desteklenir.
googlefc.callbackQueue !Array<!Nesne<dize, işlev()>> | !Dizi<işlev()> | !googlefc.CallbackQueue Kullanıcı mesajlaşma sorgularının eşzamansız olarak yürütülmesi için geri çağırma kuyruğu referansı.
googlefc.CallbackQueue !Nesnesi Geri çağırma sırası nesnesinin türü.
googlefc.AdBlockerStatusEnum !Object<dize, sayı> Kullanıcının reklam engelleyici durumunu temsil eden bir numaralandırma.
googlefc.AllowAdsStatusEnum !Object<dize, sayı> Kullanıcının reklamlara izin verme durumunu temsil eden bir numaralandırma.
googlefc.ccpa.InitialCcpaStatusEnum !Object<dize, sayı> Kullanıcının ilk CPRA durumunu temsil eden bir numaralandırma.
googlefc.ccpa.overrideDnsLink undefined|boolean Özel bir Satılmasın bağlantısını kullanmak için doğru değerine ayarlanabilecek bir boole değeridir.

Yöntem Özetleri

Ad Dönüş türü Tanım
googlefc.showRevocationMessage() tanımsız İzin kaydını temizler ve googlefc komut dosyasını yeniden yükleyerek kullanıcı için geçerli kullanıcı rızası alma mesajını gösterir.
googlefc.getAdBlockerStatus() sayı Kullanıcının reklam engelleme durumuna bağlı olarak AdBlockerStatusEnum içinde bir değer döndürür.
googlefc.getAllowAdsStatus() sayı Kullanıcının reklamlara izin verme durumuna bağlı olarak AllowAdsStatusEnum içinde bir değer döndürür.
googlefc.ccpa.getInitialCcpaStatus() sayı Kullanıcının başlangıçtaki CPRA durumuna bağlı olarak InitialCcpaStatusEnum içinde bir değer döndürür.
googlefc.ccpa.openConfirmationDialog(function(boolean)) tanımsız Varsayılan Satmayın bağlantısı geçersiz kılınırsa CPRA onayı iletişim kutusunu açar.

Sitenizde test ve hata ayıklama

Gizlilik ve Mesajlaşma, belirli mesajların (veya mesaj kombinasyonlarının) gerçek sitenizde nasıl göründüğünü görmenize olanak tanıyan hata ayıklama ve test işlevselliği sunar.

Ön koşullar:

  • Önizlemek istediğiniz mesajlar, test ettiğiniz sitenin altında yayınlanmalıdır

Aşağıdaki hata ayıklama URL'si parametrelerini kullanarak sitenizde canlı bir önizleme görebilirsiniz:

Hata ayıklama parametresi İzin verilen değerler
fc alwaysshow (hata ayıklama/önizleme modunu tetiklemek için)
fctype ab (Reklam engelleme mesajları), ccpa (CPRA devre dışı bırakma mesajları), gdpr (GDPR kullanıcı rızası alma mesajları), monetization (Teklif panosu mesajları)

Bunun sitenizde (foo.com) önizleme yapmak için nasıl kullanılacağına ilişkin bazı örnekler:

  • CPRA mesajlarını test etme -- http://foo.com/?fc=alwaysshow&fctype=ccpa
  • GDPR mesajını test edin -- http://foo.com/?fc=alwaysshow&fctype=gdpr

Alanlar: açıklamalar ve örnekler

googlefc.controlledMessagingFunction {function(!Object)}

Mesajların gösterilip gösterilmeyeceğini belirleyen işlev. Abone durumu veya sayfa URL'si gibi yayıncı tarafından belirtilen koşullarda mesaj oluşturulmasını kontrol etmek için kullanılabilir.

Diğer komut dosyaları yüklenmeden önce pencerede googlefc.controlledMessagingFunction öğesini tanımladığınızda, message.proceed(boolean) çağrılana kadar mesajlar gösterilmez. message.proceed(true) çağrıldığında mesajlaşma normal şekilde ilerler. message.proceed(false) çağrısı ise sayfa görüntüleme için herhangi bir mesaj gösterilmesini engeller.

Örnek: Sayfada, giriş yapan kullanıcının abone olup olmadığını kontrol eden bir eşzamansız işlevi (determineIfUserIsSubscriber()) tanımlayan bu komut dosyasının bulunduğunu varsayalım.

<head>
  <script>
    window.isSubscriber = undefined;
    function determineIfUserIsSubscriber() {
      if (isSubscriber !== undefined) {
        return isSubscriber;
      }
      return new Promise(resolve => {
        setTimeout(() => {
          // Change this to true if you want to test what subscribers would see.
          window.isSubscriber = false;
          resolve(window.isSubscriber);
        }, 1000);
      });
    }
  </script>
</head>

Bu, mesajı yalnızca abone olmayanlara göstermek için googlefc.controlledMessagingFunction özelliğini nasıl kullanabileceğinize dair bir örnektir.

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
      // Determine if the user is a subscriber asynchronously.
      const isSubscriber = await determineIfUserIsSubscriber();

      if (isSubscriber) {
        // If the user is a subscriber, don't show any messages.
        message.proceed(false);
      } else {
        // Otherwise, show messages as usual.
        message.proceed(true);
      }
    }
  </script>
</head>

Bu özelliğin, Offerwall kapalı beta sürümüne ait yayıncıların yalnızca Offerwall'un atlanması gerektiğini belirtmesine olanak tanıyan bir uzantısı da vardır. Bu özellik etkinken diğer mesaj türleri etkilenmez.

Offerwall'a özgü kontrollü mesajlaşma, googlefc.MessageTypeEnum türünde bir Array olan message.proceed() öğesine ek bir parametre geçirilerek gerçekleştirilir.

Örnek: Bu, diğer mesaj türlerini engellemeden, yalnızca aboneler için Offerwall sunumunu durdurmak amacıyla googlefc.controlledMessagingFunction özelliğinin kullanılmasına dair bir örnektir:

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
     // Determine if the Offerwall should display or not.
     const shouldDisplayOfferwall = await determineIfUserIsSubscriber();
     const applicableMessageTypes = [];

     if (!shouldDisplayOfferwall) {
       // Do not show the Offerwall, but allow other message types to display.
       applicableMessageTypes.push(window.googlefc.MessageTypeEnum.OFFERWALL);
       message.proceed(false, applicableMessageTypes);
     } else {
       // Otherwise, show messages as usual.
       message.proceed(true);
     }
    }
  </script>
</head>

googlefc.callbackQueue {!Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue}

Mesajlaşmayla ilgili çağrıların eşzamansız olarak yürütülmesi için genel geri çağırma kuyruğu referansı. Herhangi bir işlevi çağırmanın desteklenen tek yolu, işlevin callbackQueue öğesine eklenmesidir.

Farklı veri türleri farklı zamanlarda kullanılabilir hale geldiğinden, aşağıdaki dizelerden biri anahtar ve değer olarak yürütülecek işlev olmak üzere bir işlev harita olarak eklenmelidir.

Desteklenen anahtarlar:

Anahtar adı Kullanım Göreli gecikme
CONSENT_API_READY CONSENT_API_READY anahtarıyla geri çağırma sırasına aktarılan işlevler, desteklenen izin çerçevelerine yönelik API'ler tanımlandığında ve çağrılabilir olduğunda yürütülür. Bu noktadan itibaren, daha sonra eklenen CONSENT_API_READY içeren veya içeren işlevlerin yürütülmesi eşzamanlıdır. Çerçeveye özel ayrıntılar için IAB çerçeveleri ile ilgili bölümlere bakın. Düşük
CONSENT_DATA_READY CONSENT_DATA_READY anahtarıyla geri çağırma sırasına aktarılan işlevler, desteklenen bir izin çerçevesi altında toplanan kullanıcı izni bilindiğinde (önceki yürütmeden veya kullanıcının izin mesajıyla etkileşimde bulunmasından sonra) yürütülür. Bu noktadan itibaren, daha sonra eklenen CONSENT_DATA_READY içeren veya içeren işlevlerin yürütülmesi eşzamanlıdır. Yüksek
AD_BLOCK_DATA_READY AD_BLOCK_DATA_READY anahtarıyla geri çağırma sırasına aktarılan işlevler, akışta reklam engelleme verileri kullanılabilir hale geldiğinde yürütülür. Bu noktadan itibaren, sonradan eklenen AD_BLOCK_DATA_READY içeren veya içeren işlevlerin yürütülmesi eşzamanlıdır. Yüksek
INITIAL_CCPA_DATA_READY INITIAL_CCPA_DATA_READY ile geri çağırma sırasına aktarılan işlevler, akışta CPRA verileri kullanılabilir hale geldiğinde yürütülür. CPRA verileri için sonraki tüm isteklerin doğrudan US Privacy API (__uspapi) çağrılmasıyla alınması gerektiğini unutmayın. Aracı

googlefc.CallbackQueue {!Object}

Yöntem özeti:

Ad Tür Parametre Dönüş türü Rol
push(data) sayı data: Veri kullanılabilirliği türlerinden biri olan anahtara ve yürütülecek bir JavaScript işlevi olarak değere sahip bir anahtar/değer çifti. Kabul edilebilir veri kullanılabilirliği anahtarları: CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY ve INITIAL_CCPA_DATA_READY. Şu ana kadar eklenen komutların sayısı. Bu, dizinin mevcut uzunluğunu döndürür. Aktarılan işlevi, veriler kullanılabilir hale geldikleri sırayla ve ardından bu işlevlerin sıraya eklenme sırasına göre yürütür.

Örnek:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      if (googlefc.getAdBlockerStatus() == googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER) {
        // Handle a non-ad blocking user.
      }
    }
  });
</script>

googlefc.AdBlockerStatusEnum {!Object<string, number>}

Kullanıcının farklı reklam engelleme durumlarını gösterir. Farklı durumlar şunlardır:

googlefc.AdBlockerStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // The user was running an extension level ad blocker.
  EXTENSION_AD_BLOCKER: 1,
  // The user was running a network level ad blocker.
  NETWORK_LEVEL_AD_BLOCKER: 2,
  // The user was not blocking ads.
  NO_AD_BLOCKER: 3,
};

googlefc.AllowAdsStatusEnum {!Object<string, number>}

Kullanıcının reklam engellemeye izin verme ile ilgili farklı durumlarını gösterir. Farklı durumlar şunlardır:

googlefc.AllowAdsStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // User is currently using an ad blocker, was never using an ad blocker, or
  // allowed ads, but not because they saw the Privacy & messaging message.
  ADS_NOT_ALLOWED: 1,
  // User is no longer using an ad blocker after seeing the ad blocking message.
  ADS_ALLOWED: 2,
};

googlefc.ccpa.InitialCcpaStatusEnum{!Object<string, number>}

Kullanıcının reklam engellemeye izin verme ile ilgili farklı durumlarını gösterir. Farklı durumlar şunlardır:

googlefc.ccpa.InitialCcpaStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // CPRA does not apply to this user.
  CCPA_DOES_NOT_APPLY: 1,
  // CPPA applies to this user, and the user has not opted out yet.
  NOT_OPTED_OUT: 2,
  // CPPA applies to this user, and the user has opted out.
  OPTED_OUT: 3,
};

googlefc.ccpa.overrideDnsLink{undefined|boolean}

Varsayılan Satılmasın bağlantısını gizlemek ve özel bir Satılmasın bağlantısı kullanmak için bu alanı true olarak ayarlayın.

Örnek:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  // Signals that the default DNS link will be overridden.
  googlefc.ccpa.overrideDnsLink = true;
</script>

Yöntemler: açıklamalar ve örnekler

googlefc.getConsentStatus(): {number}


googlefc.getConsentedProviderIds(): {!Array<string>}

  1. Bu artık çağrıldığında her zaman boş bir liste döndürüyor.

googlefc.showRevocationMessage(): {undefined}

Mevcut izin kaydını temizler ve bu kullanıcı için geçerli olan kullanıcı rızası alma mesajını gösterir. Bu işlev için belirtilmesi gereken anahtar: CONSENT_DATA_READY.

Örnek:

<button type="button" onclick="googlefc.callbackQueue.push({'CONSENT_DATA_READY': () => googlefc.showRevocationMessage()});">
  Click here to revoke
</button>

googlefc.getAdBlockerStatus(): {number}

Kullanıcının reklam engelleme durumuna bağlı olarak AdBlockerStatusEnum içinde bir değer döndürür. Bu işlev için belirtilmesi gereken anahtar: AD_BLOCK_DATA_READY.

Örnek:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAdBlockerStatus()) {
          case googlefc.AdBlockerStatusEnum.EXTENSION_LEVEL_AD_BLOCKER:
          case googlefc.AdBlockerStatusEnum.NETWORK_LEVEL_AD_BLOCKER:
            // Insert handling for cases where the user is blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER:
            // Insert handling for cases where the user is not blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.UNKNOWN:
            // Insert handling for unknown cases.
            break;
      }
    }
  });
</script>

googlefc.getAllowAdsStatus(): {number}

Kullanıcının reklamlara izin verme durumuna bağlı olarak AllowAdsStatusEnum içinde bir değer döndürür. Bu işlev için belirtilmesi gereken anahtar: AD_BLOCK_DATA_READY.

Örnek:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAllowAdsStatus()) {
        case googlefc.AllowAdsStatusEnum.ADS_NOT_ALLOWED:
          // Insert handling for cases where the user has not allowed ads.
          // The user may have never been an ad blocker.
          break;
        case googlefc.AllowAdsStatusEnum.ADS_ALLOWED:
          // Insert handling for cases where the user saw the ad blocking
          // message and allowed ads on the site.
          break;
        case googlefc.AllowAdsStatusEnum.UNKNOWN:
          // Insert handling for unknown cases.
          break;
      }
    }
  });
</script>

googlefc.ccpa.getInitialCcpaStatus(): {number}

Kullanıcının CPRA durumuna bağlı olarak InitialCcpaStatusEnum içinde bir değer döndürür. Bu işlev için belirtilmesi gereken anahtar: INITIAL_CCPA_DATA_READY. CPRA verileri için sonraki tüm isteklerin doğrudan US Privacy API (__uspapi) çağrılmasıyla alınması gerektiğini unutmayın.

Örnek:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'INITIAL_CCPA_DATA_READY':
    () => {
      switch (googlefc.ccpa.getInitialCcpaStatus()) {
        case googlefc.ccpa.InitialCcpaStatusEnum.CCPA_DOES_NOT_APPLY:
          // Insert handling for cases where the user is not CPRA eligible.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // not opted out.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // opted out.
          break;
      }
    }
  });
</script>

googlefc.ccpa.openConfirmationDialog(function(boolean)): {undefined}

Varsayılan Satmayın bağlantısı geçersiz kılınırsa CPRA onayı iletişim kutusunu açar. Kullanıcı onay iletişim kutusuyla etkileşimde bulunduğunda sağlanan geri çağırma işlevi, kullanıcı kapsam dışında kalmayı seçerse true ile, aksi takdirde false ile çağrılır.

Örnek:

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  // Insert handling for user opt-out status here.
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>

IAB TCF v2 çerçevesi kapsamında GDPR izni almak için Google kullanıcı rızası yönetim çözümlerini kullanıyorsanız IAB TCF v2 API'yi kullanmanız gerekir.

İlgili geri çağırmaların yalnızca sayfada IAB TCF v2 API tanımlandığında çağrılmasını sağlamak için CONSENT_API_READY geri çağırma sırası anahtarını kullanabilirsiniz. Bu, IAB TCF v2 API'sinin 'addEventListener' komutuyla birlikte kullanılmalıdır.

Örnek:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_API_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_API_READY':
    () => __tcfapi('addEventListener', 2.2, (data, success) => {
      // Do something with consent data value; this callback may be invoked
      // multiple times as user completes consent flow.
    })
  });
</script>

İlgili geri çağırmaların yalnızca kullanıcı izni toplandığında ve IAB TCF v2 API kullanılarak erişilebilir olduğunda çağrılmasını sağlamak için CONSENT_DATA_READY geri çağırma sırası anahtarını kullanabilirsiniz. Bu özellik, 'addEventListener' komutuyla birlikte kullanılabilir. Sağladığınız geri çağırmanın ilk çağrısında sağlanan veriler, kullanıcının izin seçimlerini içerir (TCF v2 bu kullanıcı için geçerli olduğu sürece). TCF 2.2 sürümü sürümüyle birlikte 'getTCData' komutunun kullanımdan kaldırıldığını unutmayın.

Örnek:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_DATA_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __tcfapi('addEventListener', 2.2, (data, success) => {
      // Do something with consent data value; this callback may be invoked
      // multiple times if user consent selections change.
    })
  });
</script>

Google kullanıcı rızası yönetim çözümlerini CPRA için IAB GPP çerçevesiyle kullanma

IAB GPP çerçevesi kapsamında CPRA kapsamı dışında kalmayı toplamak için Google kullanıcı rızası yönetim çözümlerini kullanıyorsanız IAB GPP API'yi kullanmanız gerekir.

CPRA düzenlemesinin kapsam dışında kalma yapısı nedeniyle, IAB GPP API'nin çağrılabilir olduğundan ve geri çağırmaların çağrıldığı sırada izin verilerini döndürdüğünden emin olmak için CONSENT_API_READY veya CONSENT_DATA_READY geri çağırma sırası anahtarını kullanabilirsiniz.

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __uspapi('getUSPData', 1, (data, success) => {
      // Do something with consent data value.
    })
  });
</script>

Google kullanıcı rızası yönetim çözümlerini, özel bir Satılmasın bağlantısıyla CPRA için IAB GPP çerçevesiyle kullanma

IAB GPP çerçevesi kapsamında CPRA kapsamı dışında kalmayı seçmek için Google kullanıcı rızası yönetim çözümlerini kullanıyorsanız googlefc.ccpa.overrideDnsLink işaretini true olarak ayarlayarak özel bir Satmayın bağlantısı sağlamak mümkündür.

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Signals that the default DNS link will be overridden.
  window.googlefc.ccpa.overrideDnsLink = true;

  // Register the callback for the initial CPRA data.
  window.googlefc.callbackQueue.push({
      'INITIAL_CCPA_DATA_READY': () => {
        if (googlefc.ccpa.getInitialCcpaStatus() ===
            googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT) {
          // TODO: Display custom CPRA Do Not Sell link here.
        }
      }
    });
</script>

Bu, varsayılan Satılmasın bağlantısının oluşturulmamasını sağlar. CPRA ile uyumlu olmak için kendi Satmayın bağlantınızı oluşturmaktan sorumlu olduğunuzu unutmayın. Ardından CPRA onay iletişim kutusunu çağırarak özel Satmayın bağlantınızla kullanıcı etkileşimini işlemeniz gerekir.

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  if (userOptedOut) {
    // TODO: Hide custom CPRA Do Not Sell link here.
  }
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>