轮播广告素材

使用共享存储空间来确定用户在各网站上看到的广告素材。

Shared Storage API 是一种 适用于通用的跨站点存储的沙盒提案,支持多种 可能的使用场景。广告素材轮播就属于此类 在 Chrome 104.0.5086.0 及更高版本中进行测试。

通过广告素材轮播,您可以存储数据,例如广告素材 ID、视图 和用户互动数据,从而确定哪些广告素材全方位 不同网站。

运行共享存储空间 Worklet,根据 然后在围栏框架中呈现该广告素材。这可用于 以选择新广告或其他内容。

尝试广告素材轮播

要使用共享存储空间尝试广告素材轮播,请确认您使用的是 Chrome 104.0.5086.0 或更高版本。启用 chrome://settings/adPrivacy 下的所有广告隐私权 API。

您还可以在命令行中使用 --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames 标志启用共享存储空间。

试用代码示例

广告客户或内容制作者可能希望对 广告系列,并轮播内容或广告素材以提高效果。 共享存储空间可用于运行不同的轮替策略,例如 跨网站进行依序轮播和均匀轮播。

在此示例中:

  • creative-rotation.js 嵌入在帧中。此脚本设置哪些广告最重要(权重),并调用 Worklet 以确定应该显示哪些内容。
  • creative-rotation-worklet.js 是共享存储空间 Worklet,用于确定内容的加权分布并返回应显示的返回。

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 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 测试: 您可以将用户分配到实验组,然后将该组存储在共享存储空间中,以便跨网站访问。
  • 自定义用户体验: 根据用户的注册状态或其他用户状态共享自定义内容和号召性用语

生成摘要报告

通过共享存储空间收集信息,并生成杂乱的汇总摘要报告。这些用例的输出门控是 Private Aggregation API

  • 唯一身份用户覆盖面衡量: 许多内容制作者和广告客户都想知道 人查看了他们的内容。使用共享存储空间记录用户首次访问 用户看过您的广告、嵌入式视频或发布内容,并防止重复 统计不同网站上的同一用户然后,您可以使用 Private Aggregation API 输出覆盖面的摘要报告。
  • 受众特征衡量: 内容制作者通常希望了解其网站的受众特征 受众群体。您可以使用共享存储空间来记录 背景信息(例如您的第一方网站),并使用汇总的数据 以便在其他许多网站(例如嵌入式内容)中生成此报告。
  • K+ 频次衡量: 有时也称为“有效频次”通常会有一个 用户会认出或回想某些内容(通常在 广告观看情境)。您可以使用共享存储空间生成报告 的唯一身份用户中,特定内容至少浏览了 K 次。

Engage and share feedback

The Shared Storage proposal is under active discussion and subject to change in the future. If you try this API and have feedback, we'd love to hear it.