为什么DFP / GAM setTargeting选项不能与前置竞标一起使用?

时间:2019-02-06 16:07:47

标签: google-dfp prebid.js prebid

当我们使用DFP广告管理系统(以下简称DFP)选项来定位具有键/值对的广告时,我们注意到,当Prebid同时运行时,该选项将无效。看来Prebid覆盖了setTargeting选项。这似乎是一个常见的问题,但是我找不到有关它的任何信息。

如果我禁用前言,则setTargeting可以正常工作。

我还尝试将setTargeting放置在pbjs.que.pushsync函数之后的pbjs.que.push函数中;但这没有帮助。

我已将代码配对为仅包括基本设置,以显示我们如何配置事物。

--env enable_proxies=true

1 个答案:

答案 0 :(得分:1)

绝对是错误的事件顺序。我什至认为根本不需要pbjs.setTargetingForGPTAsync(),但您确实需要在googletag.pubads()。setTargeting(“ pageurl”,“ / home /”); < / p>

您可以使用无条件的承诺来解决此问题,然后等待承诺在内部解决,例如:

var prebidPromiseResponse = new Promise( function(resolve){ 

pbjs.que.push(function() {
    pbjs.addAdUnits(adUnits);
    pbjs.requestBids({
      bidsBackHandler: function(bids){
       if (pbjs.initAdserverSet) return;
       pbjs.initAdserverSet = true;
       googletag.cmd.push(function() {
        pbjs.que.push(function() {
           resolve(bids);
        });
      });
      },
      timeout: PREBID_TIMEOUT
    });
  });
})

然后是Google标记

googletag.cmd.push(function() {
  googletag.defineSlot('/XXX/slot-300x250-1', [[300, 250]], 'div-gpt-ad-bigblock-1').addService(googletag.pubads());
  prebidPromiseResponse.then(function(bids){
  googletag.pubads().setTargeting("pageurl", "/home/");
  googletag.pubads().enableSingleRequest();
  googletag.pubads().disableInitialLoad();
  googletag.enableServices();
});
});