如何正确编写 DFP 页外广告单元?

How to properly write a DFP out of page ad unit?

我正在开发 javascript 呈现的移动网络插页式广告。布局完全响应,因此它将占用所提供的 100% screen\iframe.

我现在想通过 DFP 显示插页式广告。

起初我创建了一个尺寸为 (320x480) 的广告单元并且效果很好,但插页式广告仅限于 iframe 的边界。

我找到了一个名为 Out-of-page 的新订单项类型。文档指出:

They may include pop-ups and floating line items and are sometimes called interstitials.

但是当我尝试在测试站点中嵌入插页式广告时,发生的情况是 iframe 保持 1x1,使插页式广告不可见(如果我用调试器手动放大它, 我看到了)


我的设置:


我在 documentation 中读到:

If you're using a DoubleClick tag creative, you must ensure that the creative code trafficked on the other end of the DoubleClick tag (i.e., another DFP network) is properly coded for an out-of-page ad unit.

就 DFP 页外插页式广告而言,广告 "properly coded" 是什么意思?如何强制插页式广告占据屏幕的所有尺寸?

不确定这是否是您需要的,而且我对 DFP 没有那么多经验,但我只是 运行 遇到了一个类似的问题,我通过手动管理 iframe 的大小解决了这个问题。也许这对你也有帮助。

DFP API 有一个您可以收听的事件,让您知道广告已完成呈现,我建议您将 iframe 属性更改为全宽,以及任何高度为安置工作。

假设您的页面上有 jQuery,这可以很容易地完成。设置 DFP 插件(调用 defineSlot 等)后,您可以像这样为此事件添加监听器:

googletag.pubads().addEventListener('slotRenderEnded', function(){
  var $adFrame = $('#id-of-the-iframe');
  $adFrame.css({width: '100%', height: '500px'});
});

DFP 文档中对此进行了概述here

希望对您有所帮助。

编辑:发布后我意识到我发布的代码示例来自 DFP GPT 库。也许你没有使用它。 This SO question 有一个 link 到某人创建的库以侦听 DFP 触发的事件。也许您可以使用它并使用我描述的技术?

再次 - 希望这有帮助:)

咨询 DFP 支持后,我能够按照以下步骤创建页外插页式广告单元:

  1. 创建一个新的广告单元,库存大小为 "Out of Page"
  2. 创建一个新的订单项和一个库存尺寸为 "Out of Page" 的移动广告素材,此订单项定位到之前的广告单元。
  3. 在库存选项卡下生成新标签,在步骤 2 中选择 "Enable synchronous requests" 和 "Out of Page"。"Enable synchronous requests" 似乎是完成这项工作的关键。

    根据Google支持:

    We usually recommend our publishers to implement Sync GPT when serving out of page (interstitial) ads as the creative renders in a element instead of an iFrame

  4. 将此标签放入测试页(带有必要的 html、head 和 body 标签),瞧!

我只是 运行 喜欢这个。似乎 DFP 已经摆脱了启用同步请求选项。由于几个原因,这从来都不是一个很好的解决方案(正如其他人所指出的那样)。首先,如果您在同一页面上有异步请求,则效果不佳。其次,它 "blocking" 会减慢您的页面速度。

友好的 iFrame

看来现在首选的方法是使用"Friendly iFrame"。要使用友好的 iFrame,请在 DFP 中设置广告素材时,取消选中 "Serve into a SafeFrame"。 DFP 现在会将您的广告投放到 "Friendly iFrame"。 Friendly iFrame 是从与父 window 相同的域提供服务的 iFrame。由于域匹配,浏览器安全规则允许 iframe 中的 JavaScript 访问父级 window(通过 window.parent.document)。现在您可以调整 iframe 的大小以使其全屏显示。为此,请将如下内容添加到您的广告代码中:

window.parent.document.getElementById(window.name).style.cssText = "position: fixed; top: 0; left: 0; bottom: 0; width: 100%; height: 100%; margin: 0;";

如果您的广告有自行关闭的方法,请确保在关闭时也将 Friendly iFrame 缩小(否则展开的 Friendly iFrame 会阻止鼠标在基础页面上的操作)。您可以这样做:

window.parent.document.getElementById(window.name).style.cssText = "position: relative; width: 0px; height: 0px;";

几点注意事项

出于安全原因,SafeFrame 是投放广告的首选方式。 SafeFrame 提供了一个 API 用于在不允许完全访问的情况下与父 window 通信。 SafeFrame 包括一个用于增加 iFrame 大小的扩展选项,但是,DFP 的 SafeFrame 实施似乎不允许您扩展到全屏。因此,最好为插页式广告使用友好的 iFrame。您可以试用 DFP 的 SafeFrame 实施 here.

请注意,您应该只允许您完全信任的内容 运行 在友好的 iFrame 中,因为它可以做很多恶意的事情(例如窃取用户会话 cookie 等)。