Pilih materi iklan berdasarkan frekuensi

Jalankan worklet Shared Storage untuk memilih URL dan merendernya dalam frame tertutup.

Shared Storage API adalah proposal Privacy Sandbox untuk penyimpanan lintas situs tujuan umum, yang mendukung banyak kemungkinan kasus penggunaan. Salah satu contohnya adalah kontrol frekuensi, yang tersedia untuk diuji di Chrome Beta 104.0.5086.0 dan yang lebih baru.

Jalankan skrip worklet untuk memilih URL dari daftar yang diberikan, berdasarkan data yang disimpan, lalu render URL tersebut dalam frame tertutup. Hal ini dapat digunakan untuk memilih iklan baru atau konten lain saat batas frekuensi telah tercapai.

Menguji pemilihan materi iklan menurut frekuensi

Untuk menguji pemilihan materi iklan menurut frekuensi dengan Shared Storage dan Fenced Frames, pastikan Anda menggunakan Chrome 104.0.5086.0 atau yang lebih baru. Aktifkan semua API privasi Iklan di bagian chrome://settings/adPrivacy.

Anda juga dapat mengaktifkan Shared Storage dengan tanda --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames di command line.

Bereksperimen dengan contoh kode

Untuk memilih dan membuat URL buram, daftarkan modul worklet untuk membaca data penyimpanan bersama. Class worklet menerima daftar hingga delapan URL, lalu menampilkan indeks URL yang dipilih.

Saat klien memanggil sharedStorage.selectURL(), worklet dieksekusi dan menampilkan URL buram untuk dirender ke dalam frame tertutup.

Misalkan Anda ingin memilih iklan atau konten lain untuk dirender berdasarkan frekuensi berapa kali pengguna telah melihatnya sebelumnya. Anda dapat menghitung berapa kali pengguna telah melihat konten, dan menyimpan nilai tersebut ke dalam penyimpanan bersama. Setelah disimpan, nilai dalam penyimpanan bersama akan tersedia untuk Anda di berbagai origin.

Kemudian, worklet penyimpanan bersama membaca nilai di penyimpanan bersama, dan menaikkan penghitung dengan setiap tampilan tambahan. Jika jumlah belum mencapai batas yang telah ditentukan sebelumnya, konten yang ingin Anda render akan ditampilkan (indeks 1). Jika tidak, URL default akan ditampilkan (indeks 0).

Dalam contoh ini:

  • creative-selection-by-frequencyjs dimuat melalui iframe produsen konten atau pengiklan, dan bertanggung jawab untuk memuat worklet penyimpanan bersama, dan merender sumber buram yang ditampilkan ke dalam frame tertutup.
  • creative-selection-by-frequency-worklet.js adalah worklet penyimpanan bersama yang membaca jumlah frekuensi untuk menentukan URL mana yang ditampilkan untuk konten atau materi iklan.

creative-selection-by-frequency.js

// The first URL is the default content or ad to be rendered when the frequency limits reached.
const CONTENT_URLS = [
  { url: `https://${contentProducerUrl}/default-content.html` },
  { url: `https://${contentProducerUrl}/example-content.html` },
];

async function injectAd() {
  // Load the worklet module.
  await window.sharedStorage.worklet.addModule('creative-selection-by-frequency-worklet.js');

  // Set the initial frequency count
  window.sharedStorage.set('frequency-count', 0, {
    ignoreIfPresent: true,
  });

  // Run the URL selection operation to choose an ad based on the frequency count in shared storage.
  const fencedFrameConfig = await window.sharedStorage.selectURL('creative-selection-by-frequency', CONTENT_URLS, {
    resolveToConfig: true
  });

  // Render the opaque URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectAd();

creative-selection-by-frequency-worklet.js

const FREQUENCY_LIMIT = 5;

class CreativeSelectionByFrequencyOperation {
  async run(urls, data) {
    // Read the current frequency limit in shared storage
    const count = parseInt(await sharedStorage.get('frequency-count'));

    // Check if the frequency limit has been reached.
    if (count === FREQUENCY_LIMIT) {
      console.log('Frequency limit has been reached, and the default content will be rendered.');
      return 0;
    }

    // Set the new frequency count in shared storage
    await sharedStorage.set('frequency-count', count + 1);
    return 1;
  }
}

// Register the operation as 'creative-selection-by-frequency'.
register('creative-selection-by-frequency', CreativeSelectionByFrequencyOperation);

Kasus penggunaan

Semua kasus penggunaan yang tersedia untuk Select URL API dapat ditemukan di bagian ini. Kami akan terus menambahkan contoh saat menerima masukan dan menemukan kasus pengujian baru.

Berinteraksi dan memberikan masukan

Perhatikan bahwa proposal Select URL API sedang dalam tahap pembahasan dan pengembangan yang berlanjut, sehingga dapat berubah sewaktu-waktu.

Kami ingin mendengar pendapat Anda tentang Select URL API.