Дополнительные возможности скрипта
Callback-функция onBidsReceived
В методе YaHeaderBiddingSettings
доступна callback-функция onBidsReceived
, которая вызывается в момент окончания опроса всех монетизаторов и получения от них ставок.
В качестве аргумента передаются ставки, полученные с последнего запроса к монетизаторам в формате: массив с объектом Bids
.
Новый запрос к монетизаторам и его завершение вызовет эту callback-функцию повторно.
Пример добавления onBidsReceived
window.YaHeaderBiddingSettings = {
biddersMap: adfoxBiddersMap,
adUnits: adUnits,
timeout: userTimeout,
callbacks: {
onBidsReceived: (bids) => {
console.log('---> PUBLIC CALLBACK onBidsReceived: ', bids);
}
}
};
Решение для сайтов с «бесконечной» прокруткой
На сайтах с бесконечной прокруткой новые части контента и рекламные места подгружаются без перезагрузки страницы. Если на страницах такого сайта используется Header Bidding, то для новых рекламных мест аукцион разыгрываться не будет — ставки были сделаны при первой загрузке и уже использованы в подборе рекламы.
Чтобы описать новый набор монетизаторов для новых рекламных мест, добавленных по мере загрузки контента, используйте метод window.Ya.headerBidding.pushAdUnits(AdUnit[])
. Вместо AdUnit[] нужно указать массив объектов с информацией, к каким монетизаторам делать запрос ставок для новых добавленных рекламных мест.
-
Перед вызовом метода для нового рекламного места добавьте инициализацию новых очередей. Для этого в элементе
head
замените код загрузчика context.js:Старый код
Новый код
<script> window.yaContextCb = window.yaContextCb || [] </script> <script src="https://yandex.ru/ads/system/context.js" async> </script>
<script> window.Ya || (window.Ya = {}); window.yaContextCb = window.yaContextCb || []; window.Ya.adfoxCode || (window.Ya.adfoxCode = {}); window.Ya.adfoxCode.hbCallbacks || (window.Ya.adfoxCode.hbCallbacks = []); </script> <script src="https://yandex.ru/ads/system/context.js" async> </script>
-
Добавьте метод
pushAdUnits
в код блока. Обратите внимание, что:- для нового баннерного места метод
pushAdUnits
необходимо вызывать доadfoxCode.create
; - в описании объектов
containerId
элементов должен отличаться от ранее сохраненных в конфигурационном скрипте, при этом сам конфигурационный скрипт вhead
страницы изменять не нужно.
- для нового баннерного места метод
Пример итогового кода для рекламного места
<div id="adfox_15218"></div>
<script>window.Ya.adfoxCode.hbCallbacks.push(function() {
window.Ya.headerBidding.pushAdUnits([
{
code: 'adfox_15218',
sizes: [[728, 90]],
bids: [
{ bidder: 'adriver', params: { placementId: 'adfox_test' } }
]
}
]);
window.yaContextCb.push(function() {
window.Ya.adfoxCode.create(
{
ownerId: 168627,
containerId: 'adfox_15218',
params: { p1: 'bzzvh', p2: 'fvxb' }
}
);
});
});
</script>
Подключение дополнительных таргетингов через Adfox HB
Если в аккаунте монетизатора, работающего через Adfox HB, настроены дополнительные таргетинги, добавьте в код вставки параметры puidN
(где N — номер характеристики от 1 до 63) вместе со значениями таргетирования. Параметры puid
добавляются в объект params
в формате name: value
, где:
name
— название параметра (puidN
);value
— значение параметра.
Пример конфигурационного скрипта с монетизатором, работающим через Adfox HB, и добавленными параметрами puid
window.YaHeaderBiddingSettings = {
biddersMap: { 'adfox_example': '957356' },
adUnits: [{
code: 'adfox_154875622348837699',
bids: [{
bidder: 'adfox_example',
params: {
pp: 'g',
ps: 'cqmv',
p2: 'fqnq',
puid1: 'woman',
puid2: '16:17:18:19',
puid3: 'green'
}
}]
}],
timeout: 500
};
Проверка ставок монетизаторов
Запросы ставок к монетизаторам могут быть неоднократно отправлены в нескольких случаях:
- при загрузке страницы — отправляются запросы ко всем монетизаторам, указанным в конфигурационном скрипте;
- при перезагрузке рекламного места — с помощью
reload()
происходит повторный опрос монетизаторов, которые относятся только к перезагружаемому объявлению; - при вызове метода
pushAdUnits()
— отправляется запрос только по указанным в нем монетизаторам.
Чтобы получить ставки с последнего опроса монетизаторов, воспользуйтесь рекламной консолью или используйте метод getLastBidsReceived
в консоли браузера:
window.Ya.headerBidding.getLastBidsReceived();
В ответе приходит массив, заполненный объектами Bid
для каждой пары «рекламное место + монетизатор». Объект может содержать только одно из полей:
banner
— при ответе от монетизатора обычным баннером;native
— при ответе от монетизатора нативным баннером;error
— при ошибке.
Пример вызова метода в консоли браузера
interface Bid {
adapterName: string; // имя монетизатора
containerId: string; // идентификатор контейнера
campaignId: number; // идентификатор рекламной кампании в Adfox
requestDuration: number; // длительность запроса
cost?: {
currency: string; // валюта "RUB"/"USD"
cpm: number; // ставка, которая пришла с сервера за 1000 показов
},
banner?: {
src: string; // содержимое баннера
},
size?: {
width: number; // ширина в px
height: number; // высота в px
},
error?: {
code: number; // код ошибки
message: string; // имя ошибки
},
native?: {
nativePayload: any; // объект с содержимым для нативного показа
}
};
Коды ошибок:
Код ошибки | Значение |
---|---|
0 |
Неизвестная ошибка. |
1 |
Отсутствие ставки или ответа. |
2 |
Некорректный ответ. |
3 |
Таймаут. |
4 |
Ошибка HTTP-протокола. |
5 |
Некорректные пользовательские данные в конфигурационном скрипте. |
6 |
Некорректные настройки монетизатора. |
7 |
Монетизатор прислал ID контейнера, отличный от ID в запросе. |
8 |
Монетизатор прислал корректный ответ без статуса. |
9 |
В ответе монетизатора отсутствует codeType или он некорректный. |
Вызов cookie-sync пикселей при запросе к монетизатору
Со страницы, на которой вы разместили код, можно вызывать cookie-sync пиксели параллельно с запросом. Ссылку на пиксель предоставляет монетизатор.
Чтобы вызвать cookie-sync пиксель:
-
Объявите переменную и пропишите ссылку на пиксель. Если ссылок несколько, добавьте в массив
pixels
в виде строки через запятую.var syncPixels = [{ bidder: 'sape', pixels: ['https://ssp-rtb.sape.ru/rmatch/.....'] }]
-
В секцию
YaHeaderBiddingSettings
добавьте вызов пикселей:syncPixels: syncPixels
Пример конфигурационного скрипта с cookie-sync пикселем для монетизатора Sape
<script>
var adfoxBiddersMap = {
'sape': '1648783'
};
var adUnits = [
{
code: 'adfox_container_id',
bids: [
{
bidder: 'sape',
params: {
placementId: '634996'
}
}
]
}
];
var userTimeout = 500;
var syncPixels = [
{
bidder: 'sape',
pixels: [
'https://ssp-rtb.sape.ru/rmatch/1',
'https://ssp-rtb.sape.ru/rmatch/2'
]
}
];
window.YaHeaderBiddingSettings = {
biddersMap: adfoxBiddersMap,
adUnits: adUnits,
timeout: userTimeout,
syncPixels: syncPixels
};
</script>ru
Отключение подложки Adfox для полноэкранного баннера
Если в коде вставки Adfox настроен показ полноэкранного баннера и монетизатор хочет отрисовать подложку на баннере самостоятельно, он может вернуть в ответе disableFullscreen: true
. Этот параметр отключит отрисовку подложки на стороне кода Adfox, и на баннере отобразится собственная подложка монетизатора.
Обратиться в службу поддержки
Новые запросы к монетизаторам будут отправлены при перезагрузке рекламного места или вызове метода pushAdUnits
.