Reklam öğelerini dönüşümlü yayınla

Bir kullanıcının sitelerde hangi reklam öğesini göreceğini belirlemek için Paylaşılan Depolama kullanın.

Shared Storage API; genel amaçlı, siteler arası depolamaya yönelik bir Özel Korumalı Alan teklifidir. Birçok olası kullanım alanını destekler. Chrome 104.0.5086.0 ve sonraki sürümlerde test etmek için kullanılabilen reklam öğesi rotasyonu buna bir örnektir.

Reklam öğesi rotasyonu ile farklı sitelerde hangi reklam öğesi kullanıcılarının göreceğini belirlemek için reklam öğesi kimliği, görüntüleme sayıları ve kullanıcı etkileşimi gibi verileri depolayabilirsiniz.

Paylaşılan Depolama iş akışı çalıştırarak, sağlanan listeden, depolanan verilere göre bir URL seçin ve ardından söz konusu reklam öğesini sınırlanmış bir çerçevede oluşturun. Bu, yeni reklamları veya başka içerikleri seçmek için kullanılabilir.

Reklam öğesi rotasyonunu deneyin

Paylaşılan depolama alanıyla reklam öğesi rotasyonu denemeleri yapmak 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ındaki --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames işaretini kullanarak da etkinleştirebilirsiniz.

Kod örnekleriyle denemeler yapma

Bir reklamveren veya içerik üreticisi, bir kampanyaya farklı stratejiler uygulamak ve etkinliği artırmak için içerikleri veya reklam öğelerini dönüşümlü yayınlamak isteyebilir. Paylaşılan depolama, farklı sitelerde sıralı rotasyon ve eşit olarak dağıtılmış rotasyon gibi farklı rotasyon stratejilerini çalıştırmak için kullanılabilir.

Bu örnekte:

  • creative-rotation.js bir çerçeveye yerleştirilmiş. Bu komut dosyası, hangi reklamların ( ağırlık) en önemli olduğunu belirler ve hangi içeriğin görüntülenmesi gerektiğini belirlemek için iş akışına çağrı yapar.
  • creative-rotation-worklet.js, görüntülenmesi gereken içerikler ve iadelerin ağırlıklı dağılımını belirleyen paylaşılan depolama iş akışıdır.

creative-rotation.js

// 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('content-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();

creative-rotation-worklet.js

class SelectURLOperation {
  async run(urls, data) {
    // Read the rotation mode from Shared Storage
    const rotationMode = await this.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 this.sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await this.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 bazılarıdır. Geri bildirim aldık ve yeni kullanım alanları keşfettikçe örnekler eklemeye devam edeceğiz.

İçerik seçimi

Paylaşılan Depolama Alanı'nda toplanan bilgilere göre çitli çerçeveler içinde farklı web sitelerinde farklı içerikler seçin ve görüntüleyin. Bu kullanım alanları için çıkış kapısı URL seçimidir.

  • Reklam öğesi rotasyonu: Kullanıcıların farklı sitelerde hangi reklam öğesini gördüğünü belirlemek için reklam öğesi kimliği, görüntüleme sayıları ve kullanıcı etkileşimi gibi verileri depolayın.
  • A/B testi: Bir deneme grubuna kullanıcı atayabilir, ardından bu grubu siteler arasında erişmek üzere 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 rapor oluşturma

Paylaşılan Depolama ile bilgi toplayarak gürültülü, toplu bir özet rapor oluşturdu. Bu kullanım alanları için çıkış kapısı, Private Aggregation API'dir.

  • Tekil erişim ölçümü: Birçok içerik üreticisi ve reklamveren, içeriklerini kaç benzersiz kullanıcının gördüğünü bilmek ister. Paylaşılan Depolama Alanı'nı kullanarak bir kullanıcının reklamınızı, yerleşik videonuzu veya yayınınızı ilk kez gördüğünü kaydedebilir ve aynı kullanıcının farklı sitelerde yinelenen şekilde sayılmasını önleyebilirsiniz. Ardından, erişiminiz için özet raporu oluşturmak amacıyla Private Aggregation API'yi kullanabilirsiniz.
  • Demografi ölçümü: İçerik üreticileri genellikle kitlelerinin demografisini anlamak ister. Paylaşılan Depolama Alanı'nı kullanarak kullanıcıların demografik verilerini, birinci taraf siteniz gibi sahip olduğunuz bir bağlamda kaydedebilir ve yerleşik içerik gibi diğer pek çok sitede bu veriler hakkında rapor oluşturmak için toplu raporlardan yararlanabilirsiniz.
  • K+ sıklık ölçümü: Bazen "etkili sıklık" olarak da bahsedildiğinde, kullanıcının belirli içeriği tanıması veya hatırlaması için genellikle bir minimum görüntüleme sayısı olur (genellikle reklam görüntülemeleri bağlamında). Bir içeriği en az K sayıda gören benzersiz kullanıcılar hakkında raporlar oluşturmak için Paylaşılan Depolama'yı kullanabilirsiniz.

Etkileşimde bulunun ve geri bildirim paylaşın

Paylaşılan Depolama alanı teklifi şu anda etkin bir şekilde tartışılmaktadır ve gelecekte değiştirilebilir. Bu API'yi deneyip geri bildirimde bulunursanız memnuniyet duyarız.