Privasi & Messaging JavaScript API

Pengantar

API ini menyediakan alat untuk berinteraksi dengan pesan yang ditawarkan oleh tab pesan. Dengannya, Anda dapat:

  • menyembunyikan pesan untuk pengguna tertentu
  • membuat kueri status pemblokiran iklan pengguna
  • izinkan pengguna mencabut izin (jika berlaku)

Anda juga dapat menggunakan alat ini untuk mengumpulkan izin pengguna menggunakan beberapa standar industri protokol:

Dalam kasus ini, status izin dikomunikasikan melalui API tersebut.

Anda dapat men-deploy fungsi pesan pengguna ini di situs Anda dalam beberapa langkah cara:

  1. Untuk sebagian besar kasus, Anda tidak perlu mengulangi pemberian tag sama sekali - paket Google Ads Penerbit Beri tag atau Tag AdSense di-deploy pesan pengguna setelah pesan dipublikasikan di produk yang relevan.
  2. Jika menggunakan pesan pemulihan pemblokiran iklan, Anda harus menambahkan iklan memblokir tag ke halaman Anda secara eksplisit. Lihat Iklan Manajer dan Pemberian tag AdSense petunjuk untuk informasi selengkapnya.

googlefc adalah namespace global yang digunakan oleh fungsi pesan pengguna untuk API-nya pada Window JavaScript.

Ringkasan Kolom

Nama Jenis Definisi
googlefc.controlledMessagingFunction function(!Object) Fungsi yang menentukan apakah akan melanjutkan pesan apa pun. Fungsi ini didukung untuk semua jenis pesan.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array&lt;function()&gt; | !googlefc.CallbackQueue Referensi ke antrean callback untuk eksekusi asinkron kueri pesan pengguna.
googlefc.CallbackQueue !Object Jenis objek antrean callback.
googlefc.AdBlockerStatusEnum !Objek<string, angka> Enum untuk mewakili status pemblokir iklan pengguna.
googlefc.AllowAdsStatusEnum !Objek<string, angka> Enum untuk mewakili status iklan yang diizinkan pengguna.
googlefc.ccpa.InitialCcpaStatusEnum !Objek<string, angka> Enum untuk mewakili status CPRA awal pengguna.
googlefc.ccpa.overrideDnsLink tidak terdefinisi|boolean Boolean yang dapat ditetapkan ke benar (true) untuk menggunakan link Jangan Jual kustom.

Ringkasan Metode

Nama Jenis hasil yang ditampilkan Definisi
googlefc.showRevocationMessage() belum ditentukan Menghapus data izin dan memuat ulang skrip googlefc untuk menampilkan pesan izin yang berlaku untuk pengguna.
googlefc.getAdBlockerStatus() angka Menampilkan nilai di AdBlockerStatusEnum, bergantung pada status pemblokiran iklan pengguna.
googlefc.getAllowAdsStatus() angka Menampilkan nilai di AllowAdsStatusEnum bergantung pada status iklan yang diizinkan pengguna.
googlefc.ccpa.getInitialCcpaStatus() angka Menampilkan nilai dalam InitialCcpaStatusEnum bergantung pada status CPRA awal pengguna.
googlefc.ccpa.openConfirmationDialog(function(boolean)) belum ditentukan Membuka dialog konfirmasi CPRA jika link Jangan Jual default diganti.

Pengujian dan proses debug di situs Anda

Privasi & pesan menyediakan fungsi proses debug dan pengujian yang memungkinkan Anda melihat tampilan pesan (atau kombinasi pesan) tertentu di situs aktual.

Prasyarat:

  • Pesan yang ingin Anda pratinjau harus dipublikasikan di situs yang pengujian terhadap

Anda dapat melihat pratinjau langsung di situs menggunakan URL proses debug berikut parameter:

Parameter debug Nilai yang diizinkan
fc alwaysshow (untuk memicu mode debug/pratinjau)
fctype ab (Pesan pemblokiran iklan), ccpa (Pesan pilihan tidak ikut CPRA), gdpr (Pesan izin GDPR), monetization (pesan Offerwall)

Beberapa contoh cara menggunakannya untuk melihat pratinjau di situs Anda (foo.com):

  • Uji pesan CPRA -- http://foo.com/?fc=alwaysshow&fctype=ccpa
  • Uji pesan GDPR -- http://foo.com/?fc=alwaysshow&fctype=gdpr

Kolom: penjelasan dan contoh

googlefc.controlledMessagingFunction {function(!Object)}

Fungsi yang menentukan apakah pesan harus ditampilkan atau tidak. Bisa digunakan untuk membatasi rendering pesan pada kondisi yang ditentukan penayang seperti status pelanggan, atau URL halaman.

Jika Anda menentukan googlefc.controlledMessagingFunction pada Jendela sebelum skrip lain sedang dimuat, pesan tidak ditampilkan sampai Anda memanggil message.proceed(boolean). Menelepon message.proceed(true) memungkinkan pengiriman pesan lanjutkan seperti biasa, sedangkan memanggil message.proceed(false) akan mencegah pesan ditampilkan untuk tayangan halaman.

Contoh: asumsikan Anda memiliki skrip ini pada halaman yang menentukan peristiwa fungsi determineIfUserIsSubscriber() yang memeriksa apakah pengguna yang masuk adalah pelanggan.

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

Ini adalah contoh cara menggunakan googlefc.controlledMessagingFunction untuk hanya menampilkan pesan kepada non-subscriber.

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

Ada juga perpanjangan fitur ini yang memungkinkan penayang bagian dari Offerwall tertutup versi beta untuk menentukan bahwa hanya Offerwall yang boleh dihentikan. Jenis pesan lainnya tidak akan terpengaruh saat fitur ini diaktifkan.

Pesan terkontrol khusus Offerwall dicapai dengan meneruskan ke message.proceed(), Array dari jenis googlefc.MessageTypeEnum.

Contoh: Ini adalah contoh penggunaan googlefc.controlledMessagingFunction untuk hanya menahan penayangan Offerwall untuk pelanggan, tanpa menekan penayangan jenis pesan:

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

Rujukan ke antrean callback global untuk eksekusi asinkron terkait pesan. Satu-satunya cara yang didukung untuk memanggil fungsi apa pun adalah dengan menambahkannya ke callbackQueue.

Karena berbagai jenis data tersedia pada waktu yang berbeda, maka {i>function<i} harus ditambahkan sebagai peta, dengan salah satu string berikut sebagai kunci yang akan dieksekusi sebagai nilai.

Kunci yang didukung:

Nama kunci Penggunaan Latensi relatif
CONSENT_API_READY Fungsi yang dikirim ke antrean callback dengan kunci CONSENT_API_READY dieksekusi saat API untuk framework izin yang didukung ditentukan dan dapat dipanggil. Mulai saat ini, eksekusi fungsi kunci CONSENT_API_READY yang ditambahkan selanjutnya akan dilakukan secara sinkron. Lihat bagian framework IAB untuk mengetahui detail khusus framework. Rendah
CONSENT_DATA_READY Fungsi yang dikirim ke antrean callback dengan kunci CONSENT_DATA_READY dieksekusi saat izin pengguna yang dikumpulkan dalam framework izin yang didukung diketahui (baik dari eksekusi sebelumnya maupun setelah pengguna berinteraksi dengan pesan izin). Mulai saat ini, eksekusi fungsi kunci CONSENT_DATA_READY yang ditambahkan selanjutnya akan dilakukan secara sinkron. Tinggi
AD_BLOCK_DATA_READY Fungsi yang didorong ke antrean callback dengan kunci AD_BLOCK_DATA_READY akan dieksekusi saat data pemblokiran iklan tersedia dalam alur. Mulai saat ini, eksekusi fungsi kunci AD_BLOCK_DATA_READY yang ditambahkan selanjutnya akan dilakukan secara sinkron. Tinggi
INITIAL_CCPA_DATA_READY Fungsi yang didorong ke antrean callback dengan INITIAL_CCPA_DATA_READY dieksekusi saat data CPRA tersedia dalam alur. Perhatikan bahwa setiap permintaan berikutnya untuk data CPRA harus diperoleh dengan langsung memanggil US Privacy API (__uspapi). Sedang

googlefc.CallbackQueue {!Object}

Ringkasan metode:

Nama Jenis Parameter Jenis hasil yang ditampilkan Peran
push(data) angka data: Pasangan nilai kunci dengan kunci sebagai salah satu data jenis ketersediaan dan nilai sebagai fungsi JavaScript yang akan dieksekusi. Kunci ketersediaan data yang dapat diterima adalah CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY, dan INITIAL_CCPA_DATA_READY. Jumlah perintah yang ditambahkan sejauh ini. Ini akan mengembalikan panjang himpunan saat ini. Mengeksekusi fungsi yang diteruskan, sesuai urutan data menjadi yang tersedia, lalu sesuai dengan urutan penambahan fungsi tersebut ke antrean.

Contoh:

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

Menampilkan berbagai status pemblokiran iklan pengguna. Berbagai negara bagian adalah:

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

Mewakili berbagai status iklan yang diizinkan oleh pemblokiran iklan dari pengguna. Perbedaan negara bagian adalah:

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

Mewakili berbagai status iklan yang diizinkan oleh pemblokiran iklan dari pengguna. Perbedaan negara bagian adalah:

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}

Tetapkan kolom ini ke true untuk menyembunyikan link default Jangan Jual dan gunakan link Jangan Jual kustom.

Contoh:

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

Metode: penjelasan dan contoh

googlefc.getConsentStatus(): {number}


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

  1. Fungsi ini sekarang selalu menampilkan daftar kosong saat dipanggil.

googlefc.showRevocationMessage(): {undefined}

Menghapus catatan izin saat ini dan menampilkan pesan izin yang berlaku untuk pengguna ini. Kunci yang harus ditentukan untuk fungsi ini adalah CONSENT_DATA_READY.

Contoh:

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

googlefc.getAdBlockerStatus(): {number}

Menampilkan nilai dalam AdBlockerStatusEnum, bergantung pada status pemblokiran iklan dari pengguna. Kunci yang harus ditentukan untuk fungsi ini adalah AD_BLOCK_DATA_READY.

Contoh:

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

Menampilkan nilai dalam AllowAdsStatusEnum bergantung pada status iklan yang diizinkan pada pengguna. Kunci yang harus ditentukan untuk fungsi ini adalah AD_BLOCK_DATA_READY.

Contoh:

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

Menampilkan nilai dalam InitialCcpaStatusEnum bergantung pada status CPRA pengguna. Kunci yang harus ditentukan untuk fungsi ini adalah INITIAL_CCPA_DATA_READY. Perhatikan bahwa setiap permintaan selanjutnya untuk data CPRA harus dapat diperoleh dengan langsung memanggil US Privacy API (__uspapi).

Contoh:

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

Membuka dialog konfirmasi CPRA jika link Jangan Jual default adalah diganti. Setelah pengguna berinteraksi dengan dialog konfirmasi, fungsi callback dipanggil dengan true jika pengguna memutuskan untuk tidak menggunakan, dan false sebaliknya.

Contoh:

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

Jika Anda menggunakan solusi pengelolaan izin Google untuk mengumpulkan izin GDPR berdasarkan framework TCF v2 IAB, Anda harus menggunakan TCF v2 IAB Google Cloud Platform.

Anda dapat menggunakan CONSENT_API_READY kunci antrean callback untuk memastikan bahwa callback terkait hanya dipanggil ketika TCF v2 API IAB ditentukan di halaman. Ini harus digunakan bersamaan dengan 'addEventListener' baru dari TCF v2 API IAB.

Contoh:

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

Anda dapat menggunakan CONSENT_DATA_READY kunci antrean callback untuk memastikan callback yang sesuai dipanggil hanya saat izin pengguna dikumpulkan dan dapat diakses menggunakan TCF v2 API IAB. Fungsi ini dapat digunakan bersama dengan 'addEventListener' command - data yang diberikan dalam panggilan pertama callback yang diberikan akan berisi pilihan izin pengguna (selama TCF v2 berlaku untuk tertentu). Perhatikan bahwa dengan dirilisnya TCF v2.2, 'getTCData' sekarang tidak digunakan lagi.

Contoh:

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

Menggunakan solusi pengelolaan izin Google dengan framework GPP IAB untuk CPRA

Jika Anda menggunakan solusi pengelolaan izin Google untuk mengumpulkan pilihan tidak ikut CPRA berdasarkan framework GPP IAB, Anda harus menggunakan GPP IAB Google Cloud Platform.

Karena sifat peraturan CPRA yang tidak diikutsertakan, Anda dapat menggunakan CONSENT_API_READY atau Callback CONSENT_DATA_READY kunci antrean untuk memastikan bahwa IAB GPP API dapat dipanggil dan menampilkan data izin pada saat callback dipanggil.

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

Menggunakan solusi pengelolaan izin Google dengan framework GPP IAB untuk CPRA dengan link Jangan Jual kustom

Jika Anda menggunakan solusi pengelolaan izin Google untuk mengumpulkan pilihan tidak ikut CPRA berdasarkan framework GPP IAB, link kustom Jangan Jual dapat diberikan dengan menetapkan tanda googlefc.ccpa.overrideDnsLink ke true.

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

Hal ini memastikan bahwa link Jangan Jual default tidak dirender. Perlu diketahui bahwa Anda bertanggung jawab untuk merender link Jangan Jual Anda sendiri agar mematuhi kebijakan dengan CPRA. Kemudian, Anda perlu menangani interaksi pengguna dengan model Jual link dengan memanggil dialog konfirmasi CPRA.

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