Большинство объявлений, которые пересылаются через DFP, не отвечают на запросы в традиционном смысле, причина этого в том, что реклама, по сути, является просто статичным изображением. Из-за этого вам нужно будет определить карту размеров, в которой DFP будет указывать, какую рекламу следует загружать при определенных размерах экрана при загрузке.
В этой части кода вы говорите, что в этот слот может загружаться реклама размером 728x60
или 375x60
, она будет выбрана случайным образом или с определенным приоритетом в зависимости от того, как он настроен в DFP. .
googletag.defineSlot('/xxxxxx/Mobile_ad', [[375, 60], [728, 60]], 'div-gpt-ad-154504231384304-0').addService(googletag.pubads())
Вам необходимо обновить код, включив в него сопоставление размеров, чтобы он знал, что он должен выбрать объявление соответствующего размера для размера экрана, на котором просматривается контент.
Вы можете сделать это, используя метод google tags defineSizeMapping
.
var mapping = googletag.sizeMapping().
addSize([100, 100], [88, 31]).
addSize([320, 400], [[320, 50], [300, 50]]).
addSize([320, 700], [300, 250]).
addSize([750, 200], [728, 90]).
addSize([1050, 200], [1024, 120]).build();
googletag.defineSlot('/6355419/travel', [[980, 250], [728, 90], [460, 60], [320, 50]], 'ad-slot')
.defineSizeMapping(mapping)
.addService(googletag.pubads())
.setTargeting('test', 'responsive'); // Targeting is only required for this example.
Каждый addSize
вызов требует двух аргументов. В приведенном ниже примере первым является массив, сообщающий DFP, что он должен использовать эту таблицу размеров при ширине / высоте браузера 375 / 60
(Вы можете установить высоту на 0
, если вам нужна только ширина), а второй аргумент говорит DFP должен загружать рекламу 320x50
или 300x50
при соблюдении требований к размеру браузера.
addSize([320, 400], [[320, 50], [300, 50]])
Размеры браузеров минимальны, это означает, что в следующем примере, если размер браузера 1028 или больше, он будет загружать 728x90
рекламу, а все, что ниже 1028, будет загружать 320x50
объявление.
.addSize([1028, 0], [[728, 90]])
.addSize([0, 0], [[320, 50]])
DFP будет проверять размер браузера только при начальной загрузке, не обновляется по умолчанию при изменении размера экрана. Вы можете использовать другой вспомогательный метод DFP для обновления рекламного места, но вам нужно написать дополнительную логику, которая сначала проверяет размер экрана.
googletag.pubads().refresh(['ad-slot'])
Вот пример того, как это работает вместе с несколькими точками останова карты размеров, вам нужно сохранить это как файл HTML и попробовать его локально, поскольку iFrame, который использует JSFiddle и Codepen, заставляет его работать неправильно. Загрузите страницу, измените размер экрана, а затем снова загрузите его, вы получите рекламу соответствующего размера в зависимости от текущего размера вашего браузера.
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script type='text/javascript'>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
</script>
<script type='text/javascript'>
googletag.cmd.push(function() {
// Defines the size mapping, there are multiple examples here.
var mapping = googletag.sizeMapping().
addSize([100, 100], [[88, 31]]).
addSize([320, 400], [[320, 50], [300, 50]]).
addSize([320, 700], [[300, 250]]).
addSize([750, 200], [[728, 90]]).
addSize([1050, 200], [[1024, 120]]).build();
// Enables async rendering and single request.
googletag.pubads().enableSingleRequest();
googletag.pubads().enableAsyncRendering();
// Here the slot is defined, the smallest advert should be defined as the slot value
// as this gets overwritten by the defineSizeMapping call.
googletag.defineSlot('/6355419/travel', [320, 50], 'ad-slot')
.defineSizeMapping(mapping)
.addService(googletag.pubads())
.setTargeting('test', 'responsive'); // Targeting is only required for this example.
// Tells the advert to display.
googletag.enableServices();
});
</script>
<div id='ad-slot'>
<script type='text/javascript'>
googletag.cmd.push(function() {
googletag.display('ad-slot');
});
</script>
</div>
Вы можете найти еще несколько примеров сопоставления размеров здесь и определения всех методов googletag здесь .
В качестве альтернативы вы можете выбрать для показа нативную рекламу, которая реагирует, , но вам потребуется рекламное объявление для ее поддержки, так как большинство объявлений не создаются таким образом . Вы можете узнать больше о нативной рекламе здесь и здесь . Они обслуживаются очень похожим образом.
googletag.defineSlot('/6355419/travel', 'fluid', 'ad-slot')