Gunakan Penyimpanan Bersama untuk menentukan materi iklan yang dilihat pengguna di seluruh situs.
Shared Storage API adalah proposal Privacy Sandbox untuk penyimpanan lintas situs tujuan umum, yang mendukung banyak kemungkinan kasus penggunaan. Salah satu contohnya adalah rotasi materi iklan, yang tersedia untuk diuji di Chrome 104.0.5086.0 dan yang lebih baru.
Dengan rotasi materi iklan, Anda dapat menyimpan data, seperti ID materi iklan, jumlah tayangan, dan interaksi pengguna, untuk menentukan materi iklan yang dilihat pengguna di berbagai situs.
Jalankan worklet Penyimpanan Bersama untuk memilih URL dari daftar yang disediakan, berdasarkan data yang disimpan, lalu render materi iklan tersebut dalam bingkai berpagar. Iklan ini dapat digunakan untuk memilih iklan baru atau konten lainnya.
Mencoba rotasi materi iklan
Untuk bereksperimen dengan rotasi materi iklan dengan Penyimpanan Bersama, 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 Penyimpanan Bersama dengan tanda --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
di command line.
Bereksperimen dengan contoh kode
Pengiklan atau produsen konten mungkin ingin menerapkan strategi yang berbeda ke kampanye, dan memutar konten atau materi iklan untuk meningkatkan efektivitas. Penyimpanan bersama dapat digunakan untuk menjalankan berbagai strategi rotasi, seperti rotasi berurutan dan rotasi yang didistribusikan secara merata, di berbagai situs.
Dalam contoh ini:
creative-rotation.js
disematkan dalam bingkai. Skrip ini menetapkan iklan mana yang paling penting ( bobot), dan memanggil worklet untuk menentukan konten mana yang harus ditampilkan.creative-rotation-worklet.js
adalah worklet penyimpanan bersama yang menentukan distribusi berbobot untuk konten dan hasil yang harus ditampilkan.
// Ad config with the URL of the content, a probability weight for rotation, and the clickthrough rate.
const DEMO_CONTENT_CONFIG = [
{
url: 'https://your-server.example/contents/content-1.html',
weight: 0.7,
},
{
url: 'https://your-server.example/contents/content-2.html',
weight: 0.2,
},
{
url: 'https://your-server.example/contents/content-3.html',
weight: 0.1,
},
];
// Set the mode to sequential and set the starting index to 0.
async function seedStorage() {
await window.sharedStorage.set('content-rotation-mode', 'sequential', {
ignoreIfPresent: true,
});
await window.sharedStorage.set('content-rotation-index', 0, {
ignoreIfPresent: true,
});
}
async function injectAd() {
// Load the worklet module
await window.sharedStorage.worklet.addModule('creative-rotation-worklet.js');
// Initially set the storage to sequential mode for the demo
seedStorage();
// Run the URL selection operation to determine the next content rendered.
const urls = DEMO_CONTENT_CONFIG.map(({ url }) => ({ url }));
const fencedFrameConfig = await window.sharedStorage.selectURL('content-rotation', urls, {
data: DEMO_CONTENT_CONFIG,
resolveToConfig: true
});
// Render the opaque URL into a fenced frame
document.getElementById('content-slot').config = fencedFrameConfig;
}
injectAd();
class SelectURLOperation {
async run(urls, data) {
// Read the rotation mode from Shared Storage
const rotationMode = await sharedStorage.get('content-rotation-mode');
// Generate a random number to be used for rotation
const randomNumber = Math.random();
let index;
switch (rotationMode) {
/**
* Sequential rotation
* - Rotates the contents in order
* - Example: A -> B -> C -> A ...
*/
case 'sequential':
const currentIndex = await sharedStorage.get('creative-rotation-index');
index = parseInt(currentIndex, 10);
const nextIndex = (index + 1) % urls.length;
await sharedStorage.set('content-rotation-index', nextIndex);
break;
/**
* Weighted rotation
* - Rotates the contentswith weighted probability
* - Example: A=70% / B=20% / C=10%
*/
case 'weighted-distribution':
// Sum the weights cumulatively, and find the first URL where the
// sum exceeds the random number. The array is sorted in
// descending order first.
let weightSum = 0;
const { url } = data
.sort((a, b) => b.weight - a.weight)
.find(({ weight }) => {
weightSum += weight;
return weightSum > randomNumber;
});
index = urls.indexOf(url);
break;
default:
index = 0;
}
return index;
}
}
register('content-rotation', SelectURLOperation);
Kasus penggunaan
Ini hanyalah beberapa kemungkinan kasus penggunaan untuk Penyimpanan Bersama. Kami akan terus menambahkan contoh saat menerima masukan dan menemukan kasus penggunaan baru.
Pemilihan konten
Pilih dan tampilkan konten yang berbeda di situs yang berbeda dalam bingkai berpagar berdasarkan informasi yang dikumpulkan di Penyimpanan Bersama. Gate output untuk kasus penggunaan ini adalah pemilihan URL.
- Rotasi materi iklan: Menyimpan data, seperti ID materi iklan, jumlah penayangan, dan interaksi pengguna, untuk menentukan materi iklan yang dilihat pengguna di berbagai situs.
- Pengujian A/B: Anda dapat menetapkan pengguna ke grup eksperimen, lalu menyimpan grup tersebut di Penyimpanan Bersama untuk diakses lintas situs.
- Pengalaman pengguna kustom: Membagikan konten kustom dan pesan ajakan (CTA) berdasarkan status pendaftaran pengguna atau status pengguna lainnya
Membuat laporan ringkasan
Mengumpulkan informasi dengan Penyimpanan Bersama dan membuat laporan ringkasan gabungan yang berisi banyak derau. Gate output untuk kasus penggunaan ini adalah Private Aggregation API.
- Pengukuran jangkauan unik: Banyak produsen konten dan pengiklan ingin mengetahui jumlah orang unik yang melihat konten mereka. Gunakan Penyimpanan Bersama untuk mencatat saat pertama kali pengguna melihat iklan, video tersemat, atau publikasi Anda, dan mencegah penghitungan ganda pengguna yang sama di situs yang berbeda. Kemudian, Anda dapat menggunakan Private Aggregation API untuk menghasilkan laporan ringkasan jangkauan.
- Pengukuran demografi: Produser konten sering kali ingin memahami demografi penontonnya. Anda dapat menggunakan Penyimpanan Bersama untuk mencatat data demografi pengguna dalam konteks tempat Anda memilikinya, seperti situs pihak pertama, dan menggunakan pelaporan agregat untuk melaporkannya di banyak situs lain, seperti konten tersemat.
- Pengukuran frekuensi K+: Terkadang digambarkan sebagai "frekuensi efektif", sering kali ada jumlah minimum tayangan sebelum pengguna mengenali atau mengingat konten tertentu (sering kali dalam konteks penayangan iklan). Anda dapat menggunakan Penyimpanan Bersama untuk membuat laporan pengguna unik yang telah melihat konten setidaknya sebanyak K kali.
Berinteraksi dan memberikan masukan
Perhatikan bahwa proposal Shared Storage API sedang dalam diskusi dan pengembangan aktif, sehingga dapat berubah sewaktu-waktu.
Kami ingin sekali mendengar pendapat Anda tentang Shared Storage API.
- Proposal: Tinjau proposal mendetail.
- Diskusi: Bergabunglah dengan diskusi yang sedang berlangsung untuk mengajukan pertanyaan dan membagikan insight Anda.
Mendapatkan Info Terbaru
- Daftar Email: Berlangganan ke daftar email kami untuk mendapatkan info terbaru dan pengumuman terkait Shared Storage API.
Perlu Bantuan?
- Dukungan Developer: Terhubung dengan developer lain dan dapatkan jawaban atas pertanyaan Anda di repositori Dukungan Developer Privacy Sandbox.