轮播广告素材

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

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 次。

互动和分享反馈

共享存储空间提案正在积极讨论,可能会发生变化 。如果您试用此 API 并有反馈意见,我们非常期待收到您的反馈意见。