Выберите объявление по частоте

Запустите рабочий модуль «Общее хранилище», чтобы выбрать URL-адрес и отобразить его в рамке, заключенной в блок.

API общего хранилища — это предложение в рамках концепции «песочницы конфиденциальности» для универсального межсайтового хранилища, поддерживающее множество возможных вариантов использования. Один из примеров — управление частотой, которое можно протестировать в Chrome Beta 104.0.5086.0 и более поздних версиях.

Запустите скрипт рабочего блока, который выберет URL-адрес из предоставленного списка на основе сохраненных данных, а затем отобразит этот URL-адрес в рамке, ограниченной рамками. Это можно использовать для выбора новых объявлений или другого контента при достижении лимита частоты показов.

Протестируйте выбор креативных решений по частоте

Чтобы протестировать подбор креативов по частоте показа с использованием Shared Storage и Fenced Frames, убедитесь, что вы используете Chrome версии 104.0.5086.0 или более поздней. Включите все API конфиденциальности рекламы в разделе chrome://settings/adPrivacy .

Также можно включить общее хранилище с помощью флага --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames в командной строке.

Поэкспериментируйте с примерами кода.

Для выбора и создания непрозрачного URL-адреса зарегистрируйте модуль рабочего процесса для чтения данных из общего хранилища. Класс рабочего процесса получает список, содержащий до восьми URL-адресов, и возвращает индекс выбранного URL-адреса.

Когда клиент вызывает sharedStorage.selectURL() , выполняется рабочий модуль, который возвращает непрозрачный URL-адрес для отображения в изолированном фрейме .

Допустим, вы хотите выбирать разные объявления или контент для показа в зависимости от того, сколько раз пользователь уже видел их раньше. Вы можете подсчитать, сколько раз пользователь видел тот или иной контент, и сохранить это значение в общем хранилище. После сохранения значение в общем хранилище становится доступным для вас из разных источников.

Затем рабочий модуль общего хранилища считывает значения из общего хранилища и увеличивает счетчик с каждым дополнительным представлением. Если счетчик не достиг заданного предела, возвращается контент, который вы хотите отобразить (индекс 1 ). В противном случае возвращается URL-адрес по умолчанию (индекс 0 ).

В этом примере:

  • creative-selection-by-frequencyjs загружается через iframe производителя контента или рекламодателя и отвечает за загрузку рабочего модуля общего хранилища и рендеринг возвращаемого непрозрачного источника в фрейм с ограждением.
  • creative-selection-by-frequency-worklet.js — это рабочий модуль для общего хранилища, который считывает счетчик частоты показов, чтобы определить, какой URL-адрес будет возвращен для контента или рекламного креатива.

creative-selection-by-frequency.js

// The first URL is the default content or ad to be rendered when the frequency limits reached.
const CONTENT_URLS = [
  { url: `https://${contentProducerUrl}/default-content.html` },
  { url: `https://${contentProducerUrl}/example-content.html` },
];

async function injectAd() {
  // Load the worklet module.
  await window.sharedStorage.worklet.addModule('creative-selection-by-frequency-worklet.js');

  // Set the initial frequency count
  window.sharedStorage.set('frequency-count', 0, {
    ignoreIfPresent: true,
  });

  // Run the URL selection operation to choose an ad based on the frequency count in shared storage.
  const fencedFrameConfig = await window.sharedStorage.selectURL('creative-selection-by-frequency', CONTENT_URLS, {
    resolveToConfig: true
  });

  // Render the opaque URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectAd();

creative-selection-by-frequency-worklet.js

const FREQUENCY_LIMIT = 5;

class CreativeSelectionByFrequencyOperation {
  async run(urls, data) {
    // Read the current frequency limit in shared storage
    const count = parseInt(await sharedStorage.get('frequency-count'));

    // Check if the frequency limit has been reached.
    if (count === FREQUENCY_LIMIT) {
      console.log('Frequency limit has been reached, and the default content will be rendered.');
      return 0;
    }

    // Set the new frequency count in shared storage
    await sharedStorage.set('frequency-count', count + 1);
    return 1;
  }
}

// Register the operation as 'creative-selection-by-frequency'.
register('creative-selection-by-frequency', CreativeSelectionByFrequencyOperation);

Use cases

All available use cases for Select URL API can be found in this section. We'll continue to add examples as we receive feedback and discover new test cases.

Engage and share feedback

Note that the Select URL API proposal is under active discussion and development and subject to change.

We're eager to hear your thoughts on the Select URL API.