Kullanıcının sitelerde gördüğü reklam öğesini belirlemek için ortak depolama alanı kullanın.
Shared Storage API, genel amaçlı, siteler arası depolama alanı için bir Özel Korumalı Alan teklifidir ve birçok olası kullanım alanını destekler. Bu tür örneklerden biri, Chrome 104.0.5086.0 ve sonraki sürümlerde test edilebilen reklam öğesi rotasyonudur.
Reklam öğesi rotasyonu sayesinde, kullanıcıların farklı sitelerde gördüğü reklam öğesini belirlemek için reklam öğesi kimliği, görüntüleme sayıları ve kullanıcı etkileşimi gibi verileri saklayabilirsiniz.
Depolanan verilere göre sağlanan listeden bir URL seçmek ve ardından bu reklam öğesini çitle çevrili bir çerçevede oluşturmak için paylaşılan depolama alanı iş parçacığı çalıştırın. Bu, yeni reklamlar veya başka içerikler seçmek için kullanılabilir.
Reklam öğesi rotasyonunu deneyin
Paylaşılan depolama alanıyla reklam öğesi rotasyonunu denemek için Chrome 104.0.5086.0 veya sonraki bir sürümü kullandığınızdan emin olun. chrome://settings/adPrivacy
altındaki tüm reklam gizliliği API'lerini etkinleştirin.
Paylaşılan depolama alanını komut satırında --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
işaretiyle de etkinleştirebilirsiniz.
Kod örneklerini deneme
Reklamverenler veya içerik üreticiler, bir kampanyaya farklı stratejiler uygulamak ve etkililiği artırmak için içerikleri ya da reklam öğelerini döndürmek isteyebilir. Ortak depolama alanı, farklı sitelerde sıralı rotasyon ve eşit olarak dağıtılmış rotasyon gibi farklı rotasyon stratejileri çalıştırmak için kullanılabilir.
Bu örnekte:
creative-rotation.js
bir çerçeveye yerleştirilmiş. Bu komut dosyası, hangi reklamların en önemli olduğunu ( ağırlık) belirler ve hangi içeriğin gösterileceğini belirlemek için iş parçacığını çağırır.creative-rotation-worklet.js
, içeriklerin ağırlıklı dağılımını belirleyen ve görüntülenmesi gereken sonuçları döndüren ortak depolama iş akışı işlevidir.
// 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);
Kullanım alanları
Bunlar, paylaşılan depolama alanının olası kullanım alanlarından yalnızca birkaçıdır. Geri bildirim aldığımızda ve yeni kullanım alanları keşfettikçe örnekler eklemeye devam edeceğiz.
İçerik seçimi
Paylaşılan Depolama'da toplanan bilgilere göre farklı web sitelerinde farklı içerikleri çitli çerçevelerde seçip gösterin. Bu kullanım alanları için çıkış kapısı URL seçimidir.
- Reklam öğesi rotasyonu: Kullanıcıların farklı sitelerde gördüğü reklam öğesini belirlemek için reklam öğesi kimliği, görüntüleme sayısı ve kullanıcı etkileşimi gibi verileri depolayın.
- A/B testi: Bir kullanıcıyı deneme grubuna atayabilir ve ardından siteler arası erişilebilmesi için bu grubu Paylaşılan Depolama'da saklayabilirsiniz.
- Özel kullanıcı deneyimleri: Kullanıcının kayıt durumuna veya diğer kullanıcı durumlarına göre özel içerikler ve harekete geçirici mesajlar paylaşın
Özet raporlar oluşturma
Paylaşılan depolama alanıyla bilgi toplayın ve gürültülü, toplu bir özet raporu oluşturun. Bu kullanım alanlarının çıkış kapısı Private Aggregation API'dir.
- Tekil erişim ölçümü: Birçok içerik üretici ve reklamveren, içeriklerini kaç tekil kullanıcının gördüğünü bilmek ister. Bir kullanıcının reklamınızı, yerleştirilmiş videonuzu veya yayınınızı ilk kez gördüğünü kaydetmek ve aynı kullanıcının farklı sitelerde tekrar sayılmasını önlemek için Paylaşılan Depolama'yı kullanın. Ardından, erişiminiz için özet rapor oluşturmak üzere Private Aggregation API'yi kullanabilirsiniz.
- Demografi ölçümü: İçerik üreticiler genellikle kitlelerinin demografisini anlamak ister. Kullanıcı demografisi verilerini, birinci taraf siteniz gibi sahip olduğunuz bir bağlamda kaydetmek için Paylaşılan Depolama'yı kullanabilir ve yerleştirilmiş içerik gibi diğer birçok sitede bu veriler hakkında rapor oluşturmak için toplu raporlamayı kullanabilirsiniz.
- K+ sıklık ölçümü: Bazen "etkili sıklık" olarak tanımlanan bu ölçümde, kullanıcıların belirli bir içeriği tanıması veya hatırlaması için genellikle minimum bir görüntüleme sayısı vardır (genellikle reklam görüntüleme bağlamında). Bir içeriği en az K kez görüntüleyen benzersiz kullanıcılarla ilgili raporlar oluşturmak için ortak depolama alanını kullanabilirsiniz.
Etkileşim kurma ve geri bildirim paylaşma
Shared Storage API önerisinin aktif olarak tartışılıp geliştirildiğini ve bu nedenle değişiklik olabileceğini unutmayın.
Shared Storage API hakkındaki görüşlerinizi öğrenmek isteriz.
- Teklif: Ayrıntılı teklifi inceleyin.
- Tartışma: Soru sormak ve analizlerinizi paylaşmak için devam eden tartışmaya katılın.
Gelişmeleri takip edin
- Posta Listesi: Paylaşılan Depolama API'si ile ilgili en son güncellemeler ve duyurular için posta listemize kaydolabilirsiniz.
Yardıma mı ihtiyacınız var?
- Geliştirici desteği: Diğer geliştiricilerle bağlantı kurun ve Privacy Sandbox Geliştirici Desteği deposunda sorularınızın yanıtlarını alın.