删除所有零区域槽大小的错误是什么?

问题描述 投票:0回答:2

最近,我开始从我的 google admanager 广告单元中收到此错误。错误是 multisize mapping only for singlesize 没有错误。

[GPT] 无效参数:SizeMappingBuilder.addSize([356, 0], [[336, 280]、[300、250]])。删除了所有零面积槽尺寸。

以下是我的sizeMapping。

<script>
   googletag.cmd.push(function(){
    var adCode = { "top":'/21762728/top'};
    var adSize = {"top":[[336,280],[300,250]]};
    var TopAdMap = googletag.sizeMapping().addSize([356, 0], [[336,280],[300,250]]).addSize([0, 0], [300,250]).build();
    googletag.defineSlot(adCode.top, adSize.top, 'ad-top-slot').defineSizeMapping(TopAdMap).addService(googletag.pubads());
   });
</script>
javascript ads google-dfp google-ad-manager google-publisher-tag
2个回答
0
投票

这是一段使用 Google Ad Manager (GAM) API 定义和设置广告位的 JavaScript 代码。这是每行的细分:

定义一个名为 adCode 的 JavaScript 变量,它包含一个对象,其键值对分别为 top 和 '/21762728/top'。此变量用于指定广告位的代码。 定义一个名为 adSize 的 JavaScript 变量,它包含一个对象,该对象的键值对分别为 top 和 [[336,280],[300,250]]。此变量用于指定广告位的尺寸。 定义一个名为 TopAdMap 的 JavaScript 变量,它使用 googletag.sizeMapping() 方法为广告位创建尺寸映射。尺寸映射指定应根据浏览器窗口的宽度显示哪些广告尺寸。在这种情况下,它将广告尺寸 [[336,280],[300,250]] 映射到至少 356 像素的浏览器窗口宽度,并将 [[300,250]] 映射到任何更小的宽度。此变量用于定义广告位的尺寸映射。 使用 googletag.defineSlot() 方法定义 Google Ad Manager 广告位。该方法采用三个参数 - 广告代码、广告尺寸和应显示广告的 div 元素的 ID。 adCode.top 和adSize.top 变量分别用于指定广告位的代码和尺寸。应显示广告的 div 元素的 ID 为“ad-top-slot”。 defineSizeMapping() 方法用于指定广告位的尺寸映射,addService() 方法用于将广告位添加到 Google Ad Manager 的广告服务器。 此 JavaScript 代码设置了一个响应式广告位,可以根据浏览器窗口的宽度显示两种不同的广告尺寸。它还为广告位定义了尺寸映射,以确保向用户展示合适的广告尺寸。


0
投票

根据官方文档,您的尺寸映射代码是正确的。这是关于此错误的说明(此处):

提供给指定 GPT 方法($METHODNAME)的 SizeMapping($ARGS)无效并自动删除。

我进行了几次测试,看起来错误的根源是视口的高度值为零,因为以下不会引发任何错误:

googletag.cmd.push(function(){
  var adCode = { "top":'/21762728/top'};
  var adCode = { "top":'/21762728/top'};
  var adSize = {"top":[[336,280],[300,250]]};
  var TopAdMap = googletag.sizeMapping().addSize([356, 1], [[336,280],[300,250]]).addSize([0, 0], [300,250]).build();
  googletag.defineSlot(adCode.top, adSize.top, 'ad-top-slot').defineSizeMapping(TopAdMap).addService(googletag.pubads());
});

事情是你不希望用户的 viewportHeight 影响你的 sizeMapping ......所以为了避免抛出警告,这里有一个解决方法:使用 sizeMappingArray 方法而不是 sizeMappingBuilder :

googletag.cmd.push(function(){
 var adCode = { "top":'/21762728/top'};
 var adSize = {"top":[[336,280],[300,250]]};      
 var TopAdMap = [
  [[356, 0], [[336,280],[300,250]]],
  [[0,0], [[300, 250]]]
 ]; 
 googletag.defineSlot(adCode.top, adSize.top, 'ad-top-slot').defineSizeMapping(TopAdMap).addService(googletag.pubads());
© www.soinside.com 2019 - 2024. All rights reserved.