Xoay vòng mẫu quảng cáo

Sử dụng Bộ nhớ dùng chung để xác định mẫu quảng cáo mà người dùng nhìn thấy trên các trang web.

API Bộ nhớ dùng chung là một đề xuất của Hộp cát về quyền riêng tư cho mục đích chung, lưu trữ trên nhiều trang web, hỗ trợ nhiều trường hợp sử dụng có thể xảy ra. Một ví dụ là tính năng xoay mẫu quảng cáo, có thể kiểm thử trong Chrome 104.0.5086.0 trở lên.

Với tính năng xoay vòng mẫu quảng cáo, bạn có thể lưu trữ dữ liệu, chẳng hạn như mã mẫu quảng cáo, số lượt xem và lượt tương tác của người dùng, để xác định những mẫu quảng cáo mà người dùng nhìn thấy trên các trang web khác nhau.

Chạy một worklet Bộ nhớ dùng chung để chọn một URL từ danh sách được cung cấp, dựa trên dữ liệu được lưu trữ, sau đó kết xuất mẫu quảng cáo đó trong một khung được bảo vệ. Bạn có thể dùng thuộc tính này để chọn quảng cáo mới hoặc nội dung khác.

Thử xoay vòng mẫu quảng cáo

Để thử nghiệm xoay vòng mẫu quảng cáo với Bộ nhớ dùng chung, hãy xác nhận rằng bạn đang sử dụng Chrome 104.0.5086.0 trở lên. Sau đó, hãy bật cờ thử nghiệm API Quảng cáo hộp cát về quyền riêng tư tại chrome://flags/#privacy-sandbox-ads-apis.

Đặt thử nghiệm API Quảng cáo trên Hộp cát về quyền riêng tư thành bật để sử dụng các API này

Bạn cũng có thể bật Bộ nhớ dùng chung bằng cờ --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames trong dòng lệnh.

Thử nghiệm với mã mẫu

Nhà quảng cáo hoặc nhà sản xuất nội dung có thể muốn áp dụng nhiều chiến lược cho một chiến dịch và xoay vòng nội dung hoặc mẫu quảng cáo để tăng tính hiệu quả. Bạn có thể sử dụng bộ nhớ dùng chung để chạy nhiều chiến lược xoay vòng (chẳng hạn như xoay vòng tuần tự và xoay vòng phân bổ đồng đều) trên các trang web khác nhau.

Trong ví dụ này:

  • creative-rotation.js được nhúng trong một khung. Tập lệnh này sẽ đặt quảng cáo nào là quan trọng nhất ( trọng số) và các lệnh gọi đến worklet để xác định nội dung nào sẽ hiển thị.
  • creative-rotation-worklet.js là worklet bộ nhớ dùng chung xác định việc phân bổ trọng số cho các nội dung và dữ liệu trả về sẽ được hiển thị.

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

Trường hợp sử dụng

Đây chỉ là một số trường hợp sử dụng Bộ nhớ dùng chung. Chúng tôi sẽ tiếp tục thêm các ví dụ khi nhận được ý kiến phản hồi và khám phá các trường hợp sử dụng mới.

Lựa chọn nội dung

Chọn và hiển thị nhiều nội dung trên các trang web khác nhau trong khung bảo vệ dựa trên thông tin được thu thập trong Bộ nhớ dùng chung. Cổng đầu ra cho các trường hợp sử dụng này là lựa chọn URL.

  • Xoay vòng mẫu quảng cáo: Lưu trữ dữ liệu, chẳng hạn như mã mẫu quảng cáo, số lượt xem và lượt tương tác của người dùng, để xác định xem người dùng mẫu quảng cáo nào sẽ nhìn thấy mẫu quảng cáo nào trên các trang web khác nhau.
  • Thử nghiệm A/B: Bạn có thể chỉ định người dùng cho một nhóm thử nghiệm, sau đó lưu trữ nhóm đó trong Bộ nhớ dùng chung để truy cập trên nhiều trang web.
  • Trải nghiệm người dùng tuỳ chỉnh: Chia sẻ nội dung tuỳ chỉnh và lời kêu gọi hành động dựa trên trạng thái đăng ký của người dùng hoặc các trạng thái khác của người dùng

Tạo báo cáo tóm tắt

Thu thập thông tin bằng Bộ nhớ dùng chung và tạo một báo cáo tóm tắt tổng hợp, nhiễu. Cổng đầu ra cho các trường hợp sử dụng này là API tổng hợp riêng tư.

  • Đo lường phạm vi tiếp cận người dùng riêng biệt: Nhiều nhà sản xuất và nhà quảng cáo nội dung muốn biết có bao nhiêu người riêng biệt đã xem nội dung của họ. Hãy sử dụng Bộ nhớ dùng chung để ghi lại lần đầu tiên người dùng xem quảng cáo, video nhúng hoặc ấn bản của bạn, đồng thời tránh tính trùng lặp một người dùng đó trên các trang web khác nhau. Sau đó, bạn có thể sử dụng API tổng hợp riêng tư để tạo báo cáo tóm tắt cho phạm vi tiếp cận của mình.
  • Đo lường thông tin nhân khẩu học: Các nhà sản xuất nội dung thường muốn hiểu thông tin nhân khẩu học của khán giả của họ. Bạn có thể sử dụng Bộ nhớ dùng chung để ghi lại dữ liệu nhân khẩu học của người dùng trong ngữ cảnh mà bạn có dữ liệu đó, chẳng hạn như trang web của bên thứ nhất, đồng thời sử dụng báo cáo tổng hợp để báo cáo về dữ liệu đó trên nhiều trang web khác, chẳng hạn như nội dung được nhúng.
  • Đo lường tần suất K trở lên: Đôi khi được mô tả là "tần suất hiệu quả", thường có số lượt xem tối thiểu trước khi người dùng nhận ra hoặc nhớ lại một số nội dung nhất định (thường trong ngữ cảnh lượt xem quảng cáo). Bạn có thể sử dụng Bộ nhớ dùng chung để tạo báo cáo về những người dùng riêng biệt đã xem một nội dung ít nhất K lần.

Thu hút và chia sẻ ý kiến phản hồi

Đề xuất về Bộ nhớ dùng chung đang được thảo luận và có thể thay đổi trong tương lai. Nếu bạn dùng thử API này và có ý kiến phản hồi, chúng tôi rất sẵn sàng lắng nghe.