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

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.

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

creative-rotation-worklet.js

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

使用场景

以上仅列举了共享存储空间的一些可能用例。随着我们收到反馈并发现新的使用场景,我们会继续添加示例。

内容选择

根据在共享存储空间中收集的信息,在围栏框架中选择并显示不同网站上的不同内容。这些用例的输出门限是网址选择。

  • 广告素材轮替:存储广告素材 ID、观看次数和用户互动等数据,以确定用户在不同网站上看到的广告素材。
  • A/B 测试:您可以将用户分配到实验组,然后将该组存储在共享存储空间中,以便跨网站访问。
  • 自定义用户体验:根据用户的注册状态或其他用户状态分享自定义内容和号召性用语

生成摘要报告

使用共享存储空间收集信息,并生成包含噪声的汇总摘要报告。这些用例的输出网关是不公开汇总 API

  • 衡量覆盖的唯一身份用户数:许多内容制作者和广告客户都希望了解其内容的覆盖面(即看到过其内容的唯一身份用户数)。使用共享存储空间可记录用户首次看到您的广告、嵌入的视频或发布内容的时间,并防止在不同网站上重复统计同一用户。然后,您可以使用 Private Aggregation API 输出覆盖面摘要报告。
  • 受众特征衡量:内容创作者通常希望了解其观众的受众特征。您可以使用共享存储空间在拥有用户特征数据的情境(例如您的第一方网站)中记录用户特征数据,并使用汇总报告在许多其他网站(例如嵌入式内容)中生成关于这些数据的报告。
  • “K+”频次衡量:有时也称为“有效频次”,通常需要达到最低观看次数,用户才能识别或回想某些内容(通常是在广告观看情境中)。您可以使用共享存储空间生成报告,了解至少观看了某项内容 K 次的唯一身份用户。

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.

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?