چرخش خلاقیت های تبلیغاتی

از یک فضای ذخیره‌سازی مشترک برای تعیین اینکه کاربر چه خلاقیتی را در سایت‌ها می‌بیند، استفاده کنید.

Shared Storage API یک پیشنهاد Privacy Sandbox برای اهداف عمومی، فضای ذخیره‌سازی بین سایتی است که از بسیاری از موارد استفاده ممکن پشتیبانی می‌کند. یکی از این نمونه ها چرخش خلاق است که برای آزمایش در کروم 104.0.5086.0 و نسخه های جدیدتر در دسترس است.

با چرخش خلاق، می‌توانید داده‌هایی مانند شناسه خلاق، تعداد بازدیدها و تعامل کاربر را ذخیره کنید تا مشخص کنید کاربران خلاق کدام یک را در سایت‌های مختلف می‌بینند.

یک Worklet Storage مشترک را اجرا کنید تا یک URL از لیست ارائه شده، بر اساس داده های ذخیره شده انتخاب کنید، و سپس آن را خلاقانه در یک قاب حصاردار ارائه کنید. این می تواند برای انتخاب تبلیغات جدید یا محتوای دیگر استفاده شود.

چرخش خلاقانه را امتحان کنید

برای آزمایش چرخش خلاقانه با فضای ذخیره‌سازی مشترک، تأیید کنید که از Chrome 104.0.5086.0 یا جدیدتر استفاده می‌کنید. همه APIهای حریم خصوصی تبلیغات را در chrome://settings/adPrivacy فعال کنید.

همچنین می‌توانید ذخیره‌سازی مشترک را با پرچم --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);

Use cases

These are only some of the possible use cases for Shared Storage. We'll continue to add examples as we receive feedback and discover new use cases.

Content selection

Select and display different content on different websites in fenced frames based on information collected in Shared Storage. The output gate for these use cases is URL selection.

  • Creative rotation: Store data, such as creative ID, view counts, and user interaction, to determine which creative users' see across different sites.
  • A/B testing: You can assign a user to an experiment group, then store that group in Shared Storage to be accessed cross-site.
  • Custom user experiences: Share custom content and calls-to-action based on a user's registration status or other user states

Generate summary reports

Collect information with Shared Storage and generate a noisy, aggregated summary report. The output gate for these use cases is the Private Aggregation API.

  • Unique reach measurement: Many content producers and advertisers want to know how many unique people saw their content. Use Shared Storage to record the first time a user saw your ad, embedded video, or publication, and prevent duplicative counting of that same user on different sites. You can then use the Private Aggregation API to output a summary report for your reach.
  • Demographics measurement: Content producers often want to understand the demographics of their audience. You can use Shared Storage to record user demographic data in a context where you have it, such as your first-party site, and use aggregated reporting to report on it across many other sites, such as embedded content.
  • K+ frequency measurement: Sometimes described as "effective frequency," there is often a minimum number views before a user will recognize or recall certain content (often in the context of advertisement views). You can use Shared Storage to build reports of unique users that have seen a piece of content at least K number of times.

مشارکت کنید و بازخورد را به اشتراک بگذارید

توجه داشته باشید که پیشنهاد مشترک ذخیره سازی API در دست بحث و توسعه فعال است و بنابراین ممکن است تغییر کند.

ما مشتاقیم نظرات شما را در مورد API ذخیره سازی مشترک بشنویم.

در جریان باشید

  • فهرست پستی : برای آخرین به‌روزرسانی‌ها و اطلاعیه‌های مربوط به API ذخیره‌سازی مشترک، در فهرست پستی ما مشترک شوید.

به کمک نیاز دارید؟