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 người dùng nhìn thấy trên các trang web.

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

Với chế độ 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, chế độ xem và tương tác của người dùng để xác định xem xem qua các trang web khác nhau.

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

Thử chế độ 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. Bật mọi API quyền riêng tư trong quảng cáo trong chrome://settings/adPrivacy.

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 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 các chiến lược khác nhau cho một chiến dịch và xoay vòng nội dung hoặc quảng cáo để tăng hiệu quả. Bạn có thể dùng bộ nhớ dùng chung để chạy các chiến lược xoay vòng khác nhau, chẳng hạn như xoay vòng tuần tự và xoay vòng phân phối đồ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 đặt quảng cáo nào quan trọng nhất ( trọng số) và 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 giúp xác định mức phân bổ theo trọng số của các nội dung và dữ liệu trả về cần 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 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);

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

Đây chỉ là một số trường hợp sử dụng có thể áp dụng cho Bộ nhớ dùng chung. Chúng tôi sẽ Hãy tiếp tục thêm các ví dụ dưới dạng nhậ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ị nội dung khác nhau trên các trang web 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à 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 xem trên các trang web khác nhau.
  • Thử nghiệm A/B: Bạn có thể chỉ định người dùng vào một nhóm thử nghiệm, sau đó lưu trữ nhóm đó trong Bộ nhớ dùng chung để có thể 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, gây phiền toái. 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 nội dung và nhà quảng cáo muốn biết có bao nhiêu người đã xem nội dung của họ. Sử dụng Bộ nhớ dùng chung để ghi lại lần đầu người dùng nhìn thấy quảng cáo, video được nhúng hoặc ấn phẩm của bạn và ngăn chặn nội dung sao chép tính toán cùng 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ư để xuất báo cáo tóm tắt về 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 rõ đặc điểm nhân khẩu học của độc giả. Bạn có thể sử dụng Bộ nhớ dùng chung để ghi lại dữ liệu nhân khẩu học người dùng trong một ngữ cảnh nơi bạn có (chẳng hạn như trang web của bên thứ nhất) và sử dụng để báo cáo về nội dung đó 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 trên K+: Đôi khi được mô tả là "tần suất hiệu quả", thường có số lượng tối thiểu trước khi người dùng nhận ra hoặc nhớ lại nội dung nhất định (thường nằm trong ngữ cảnh của 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 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 mong nhận được ý kiến phản hồi của bạn.