ads - Google 发布商代码 (GPT) 广告调用返回错误请求

标签 ads google-dfp

我们正在尝试将网站上的 DFP 广告调用转换为采用单请求模式异步呈现的 GPT 广告调用。我们试图用广告制作一个概念验证页面。但页面似乎没有显示任何广告......下面是我从https://support.google.com/dfp_premium/bin/answer.py?hl=en&answer=1638622&topic=28788&ctx=topic修改的代码

似乎收到了错误的广告调用请求...并且广告 div 为空

<html>
<head>
<script type="text/javascript">
  var googletag = googletag || {};
  googletag.cmd = googletag.cmd || [];
  (function() {
    var gads = document.createElement("script");
    gads.async = true;
    gads.type = "text/javascript";
    var useSSL = "https:" == document.location.protocol;
    gads.src = (useSSL ? "https:" : "http:") + "//www.googletagservices.com/tag/js/gpt.js";
     var node =document.getElementsByTagName("script")[0];
     node.parentNode.insertBefore(gads, node);
   })();
</script>
<script type="text/javascript">
  googletag.cmd.push(function() {
    googletag.pubads().set("adsense_background_color", "000000");
  });
</script>
<script>
  googletag.cmd.push(function() {
    googletag.defineSlot("/N6752/adj/hw.bd/home",[728, 90], "div-gpt-ad-123456789-0")
      .addService(googletag.pubads());
    googletag.defineSlot("/N6752/adj/hw.bd/home", [300, 250] , "div-gpt-ad-123456789-1")
      .addService(googletag.pubads());
     googletag.pubads().enableSingleRequest();
     googletag.enableServices();
   });
 </script>
</head>
<body>
  <div id="div-gpt-ad-123456789-0" style="width: 728px; height: 90px">
    <script type="text/javascript">
      googletag.cmd.push(function() {
      googletag.display("div-gpt-ad-123456789-0");
      });
    </script>
  </div>
    <div id="div-gpt-ad-123456789-1">
    <script type="text/javascript">
      googletag.cmd.push(function() {
          googletag.display("div-gpt-ad-123456789-1");
      });
    </script>
  </div>
</body>
</html>

最佳答案

我立即发现您调用的 googletag.defineSlot 部分存在两个问题:

  1. 在单一请求模式下使用异步广告调用时,您无需像使用旧式 JavaScript 样式广告调用时那样在网络代码前添加“N”前缀。所以在你的情况下应该是 /6752/ 而不是 /N6752/
  2. 对于目标广告单元 /adj/hw.bd/home,您已在 /adj/ 开头添加了指示广告位类型的旧标记。您不需要像使用旧式 JavaScript 样式广告调用时那样在单请求模式下的异步广告调用中传递此信息。相反,您应该只传递广告单元 /hw.bd/home

解决这两个问题后,您的代码:

<script>
  googletag.cmd.push(function() {
    googletag.defineSlot("/6752/hw.bd/home",[728, 90], "div-gpt-ad-123456789-0")
      .addService(googletag.pubads());
    googletag.defineSlot("/6752/hw.bd/home", [300, 250], "div-gpt-ad-123456789-1")
      .addService(googletag.pubads());
    googletag.pubads().enableSingleRequest();
    googletag.enableServices();
   });
</script>

不再返回“错误请求”响应。这些调用仍然没有返回实际的广告素材,而是返回 DFP 的默认响应,因此我怀疑您仍然需要验证是否有针对给定广告位/尺寸的广告,或者您可能必须在之后使用 .setTargeting 传递其他键/值定位参数对 .addService 的调用,即 .setTargeting("key", "value");

<script>
    googletag.cmd.push(function () {
    googletag.defineSlot("/6752/hw.bd/home", [728, 90], "div-gpt-ad-123456789-0")
        .addService(googletag.pubads())
        .setTargeting("key", "value");
    googletag.defineSlot("/6752/hw.bd/home", [300, 250], "div-gpt-ad-123456789-1")
        .addService(googletag.pubads())
        .setTargeting("key", "value");
    googletag.pubads().enableSingleRequest();
    googletag.enableServices();
});
</script>

有关这方面的更多信息可以在您在问题中引用的同一链接 https://support.google.com/dfp_premium/bin/answer.py?hl=en&answer=1638622 中找到,方法是查看右侧列,其中文档对示例代码有详细注释。

关于ads - Google 发布商代码 (GPT) 广告调用返回错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811658/

相关文章:

ios - 具有全屏广告的广告网络的 MonoTouch 绑定(bind)?

ios - Xcode 9 Swift 4 AR 应用添加广告

javascript - 在 HTML5 移动网络应用程序中双击 DFP 广告管理系统动态刷新广告单元

javascript - 无论如何都可以使用 javascript 找到广告加载时间

javascript - DFP 报表自由格式键值,utm_campaign

ios - admob Interstitial 自动关闭

android - 如何在 Android 应用程序中测试视频广告 (Vungle)

javascript - AdSense 是否会将网页的 HTML 发送给 Google 进行分析?如果没有,怎么办?

google-dfp - 如何通过广告位名称获取广告位

javascript - 是否可以修复第三方广告的内存泄漏?