Как покупатель рекламы (DSP и рекламодатели), вы можете быть заинтересованы в участии в аукционе рекламы Protected Audience на сайте издателя, чтобы нацелить рекламу на группу интересов, которую вы определили на сайте рекламодателя. Участвуя в аукционе Protected Audience, вы можете охватить своих идентифицированных клиентов на других сайтах, сохраняя конфиденциальность.
В аукционе Protected Audience вы предоставляете логику для генерации ставки, а браузер вычисляет ставку, используя эту логику. Это отличается от других архитектур аукциона, где вы отправляете ставку напрямую, а не предоставляете логику.
Вы предоставляете свою логику генерации ставок в функции JavaScript generateBid()
, и файл размещается на вашем сервере. Когда вы добавляете пользователя в группу интересов , местоположение этого файла передается в конфигурацию группы интересов как biddingLogicUrl
.
Во время аукциона браузер извлекает вашу логику ставок, указанную в поле biddingLogicUrl
, и выполняет вашу функцию generateBid()
для каждой группы интересов в безопасной изолированной среде, которая ограничена в своей коммуникации с внешним контекстом. Когда выполняется generateBid()
, браузер передает сигналы в функцию в качестве аргументов. Эти сигналы содержат различную информацию из разных источников, например, данные первой стороны издателя, данные продавца, данные в реальном времени и многое другое. Вы можете использовать эти сигналы для расчета ставки, а значение возвращается из вызова generateBid()
. После отправки ставок браузер выполнит логику оценки продавца для каждой ставки, чтобы вычислить оценку желательности продавца.
generateBid()
Ниже описаны аргументы функции generateBid()
и структура ставки, возвращаемой функцией:
generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals, directFromSellerSignals) {
return {
ad: adObject,
adCost: optionalAdCost,
bid: bidValue,
bidCurrency: 'USD',
render: {
url: renderURL,
width: renderWidth,
height: renderHeight
},
adComponents: [
{url: adComponent1, width: componentWidth1, height: componentHeight1},
{url: adComponent2, width: componentWidth2, height: componentHeight2},
// ...
],
allowComponentAuction: false,
modelingSignals: 123 // 0-4095 integer (12-bits)
};
}
Аргументы
generateBid()
принимает следующие аргументы:
Аргумент | Роль |
---|---|
| Объект, переданный покупателем рекламы. Группа интересов может быть обновлена с помощью dailyUpdateUrl . |
| Свойство аргумента конфигурации аукциона, переданного navigator.runAdAuction() продавцом. Это предоставляет информацию о контексте страницы (такую как размер объявления и идентификатор издателя), тип аукциона (первая цена или вторая цена) и другие метаданные. |
| Свойство аргумента конфигурации аукциона, переданного продавцом. Это может предоставить контекстные сигналы с сервера покупателя о странице, если продавец является SSP , который выполняет вызов торгов в реальном времени на серверы покупателя и передает ответ обратно, или если страница издателя напрямую связывается с сервером покупателя. Если это так, покупатель может захотеть проверить криптографическую подпись этих сигналов внутри generateBid() в качестве защиты от подделки. |
| Объект, ключами которого являются trustedBiddingSignalsKeys для группы интересов, и значения которого возвращаются в запросе trustedBiddingSignals . |
| Объект, созданный браузером, который может включать информацию о контексте страницы (например, hostname текущей страницы, которое продавец в противном случае мог бы подделать) и данные для самой группы интересов (например, запись о том, когда группа ранее выигрывала аукцион, чтобы разрешить ограничение частоты показов на устройстве). |
| Сигналы, поступающие от конкретного продавца, в отличие от auctionSignals и sellerSignals , которые могут поступать от любого участника, присутствующего в контексте выполнения runAdAuction . |
Сигналы браузера
Объект browserSignals
имеет следующие свойства:
{
topWindowHostname: 'publisher.example',
seller: 'https://ssp.example',
topLevelSeller: 'https://www.top-level-ssp.com',
requestedSize: {width: 100, height: 200}, /* if specified in auction config */
joinCount: 3,
recency: 3600000,
bidCount: 17,
prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
wasmHelper: ...
dataVersion: 1,
adComponentsLimit: 40
}
Свойство | Описание |
---|---|
| Имя хоста, на котором был выполнен вызов runAdAuction() . |
| Продавец, которому подается ставка. На аукционе компонентов это значение — продавец компонента. |
| Продавец высшего уровня на аукционе компонентов, присутствующий только на аукционе компонентов. |
| Свойство requestedSize рекомендует размер фрейма для аукциона. Продавец устанавливает запрошенный размер в конфигурации аукциона, и значение становится доступным для участников торгов в generateBid() . Участники торгов внутри аукциона могут выбрать другой размер контента для объявления, и этот полученный размер будет визуально масштабирован, чтобы вписаться в размер контейнера элемента. |
| Поле joinCount — это количество раз, когда данное устройство присоединялось к данной группе интересов за последние 30 дней, при этом группа интересов непрерывно сохранялась (т. е. в хранении группы интересов на устройстве не было пробелов из-за выхода или истечения срока членства). |
| Поле recency — это продолжительность времени (в минутах) с момента присоединения устройства к этой группе интересов до настоящего момента. |
| Количество раз, когда данная группа интересов подавала заявку. |
| Поле prevWinMs содержит выигрышные объявления группы интересов и время с момента их предыдущих побед в миллисекундах. Обратите внимание, что объект объявления здесь содержит только поля renderURL и метаданных. |
| Объект WebAssembly.Module на основе biddingWasmHelperURL группы интересов. |
| Значение версии данных из ответа(ов) службы «Ключ/Значение» покупателя. |
| Максимальное количество компонентов рекламы, которые может вернуть generateBid() |
Рассчитать ставку
Для расчета значения ставки код в generateBid()
может использовать свойства параметров функции.
Например:
function generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals) {
return {
// ...
bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
// ...
}
}
Вернуть ставку
generateBid()
возвращает объект со следующими свойствами:
Свойство | Роль |
---|---|
ad | Произвольные метаданные об объявлении, например, информация, которую продавец ожидает узнать об этой ставке или креативе объявления. Продавец использует эту информацию в своей логике аукциона и принятия решений. |
adCost | Числовое значение, используемое для передачи отчета рекламодателя о клике или стоимости конверсии из generateBid в reportWin. Точность этого числа ограничена 8-битной мантиссой и 8-битной экспонентой, при этом округление выполняется стохастически. |
adComponents | Необязательный список из 20 компонентов для объявлений, состоящих из нескольких частей , взятых из свойства adComponents аргумента группы интересов, переданного в navigator.joinAdInterestGroup() . |
allowComponentAuction | Логическое значение, указывающее, может ли эта ставка использоваться в аукционе компонентов. По умолчанию "false", если не указано иное. |
bid | Числовая ставка, которая будет участвовать в аукционе. Продавец должен иметь возможность сравнивать ставки от разных покупателей, поэтому ставки должны быть в какой-то выбранной продавцом единице (например, «USD за тысячу»). Если ставка равна нулю или отрицательна, то эта группа интересов вообще не будет участвовать в аукционе продавца. С помощью этого механизма покупатель может реализовать любые правила рекламодателя относительно того, где его реклама может или не может появляться. |
bidCurrency | Валюта ставки, используемая для проверки валюты . |
render | Словарь, описывающий креатив, который должен быть отображен, если эта ставка выиграет аукцион. Сюда входит:
|
| Целое число 0-4095 (12 бит) передается в reportWin() с шумоподавлением, как описано в схеме шумоподавления и сегментирования . Недопустимые значения, такие как отрицательные, бесконечные и NaN значения, будут игнорироваться и не передаваться. Будут передаваться только самые младшие 12 бит.Покупатель может использовать сигналы, доступные внутри функции generateBid() , включая данные из данных покупателя первой стороны, собранные во время создания группы интересов в userBiddingSignals , чтобы получить некоторое значение, которое передается в функцию отчетности о выигрыше покупателя для включения обучения модели машинного обучения. |