Google 互动式媒体广告 SDK 常见问题解答

Stay organized with collections Save and categorize content based on your preferences.

为什么有的格式无法返回广告?
测试广告代码已设置为始终针对有效请求返回广告。这是为了方便集成,并可让您更轻松地测试播放器如何请求和呈现广告。不过,您的网站、帐号或广告单元并非始终都能以各种格式展示广告。如果您的集成对于测试代码正常运行,但不适用于您自己的代码,则原因可能如下:
  • 您向环境投放的视频格式不受支持。例如,您要向 iOS 或 Android 仅投放 HTML5 广告。
  • 如果您使用的是 Ad Manager,您的发布商 ID 目前可能没有任何广告定位到此 ID。此外,请确保您已在 Ad Manager 中批准相关广告和广告素材。
  • 如果您使用的是 AdSense,您的网站或测试页的定位条件可能没有任何有效的广告。最常见的原因是使用未抓取的专用网站。
  • 如果您使用的是 Ad Exchange 广告联盟合作伙伴管理服务,并且“descriptionURL”未设置或不在自有或运营的网域管理列表中,则广告不会投放到该列表中。
  • 查看 Ad Exchange 视频中定义的 minCPM 阈值。如果每千次展示费用相当高,可能会导致填充率非常低。要解决此问题,请尝试移除 minCPM 或者从广告请求中移除广告单元参数(即广告位名称),以验证这是否会影响填充率。
什么样的 descriptionUrl 比较合适?
为实现最佳效果,descriptionUrl 所指向的页面内容不应由字词或词组组成,而是由 1-3 个段落实际描述内容和您在提供这些内容过程中的作用。 过去一种成功的方法是从动态变化的块中动态拼接 descriptionUrl 网页内容。例如,用几句话介绍网站内容,用几句话介绍您的网站所提供的产品/服务,再添加一些与每个 AdSense 渠道关联的预定义代码段(如“娱乐”或“体育”)。因此,每段内容都有一个与之关联的不同 descriptionUrl,提供常规信息(如类型描述符)以及具体信息(直接内容的内容)。

该元数据 HTML 应该非常简单,例如:

<html>
  <head>
    <title>Domain.com - Your tag line here!</title>
  </head>
  <body>
    <h1>Descriptions</h1>
    <h2>About this Content</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...</p>
    <h2>About Domain.com</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...</p>
  </body>
</html>
  
为什么我收到了“广告响应未包含有效广告类型”的错误消息?
此错误通常是因为在给定的时间段内未有广告定位到特定 publisherId。这种情况可能在一天中不同时期有所不同,也可能随着广告系列的开始和结束而有几天的时间不同。您应检查您想要定位的广告是否尚未过期,以及广告的定位条件是否正确。 只要可以使用测试 publisherId 正确请求、接收和呈现广告,您就可以确保在有广告可用时,使用实际的 publisherId 正确处理这些广告。
是否提供了可用来测试的 Ad Manager 视频广告代码?
代码示例页面上提供了示例代码。
是否应将 adSlotWidthadSlotHeight 的值设为与 Ad Manager 广告代码中 sz 的值相同?
不一定。adSlotWidthadSlotHeight 必须设为您希望广告填充的播放器或区域的宽度/高度。AdSense 使用它们来确定哪些广告可适应该空间。Ad Manager 广告代码中的 sz 键值对是定位参数,不一定会影响投放的广告素材(详见下文)。
演示广告代码的显示效果良好,但切换为我的广告代码后,就无法显示任何广告了。
检查以确保将某些内容传送到您请求的广告代码。最简单的方法是查看 HTTP 流量。如果 HTML 定位块中返回了 1x1 像素 grey.gif 图片,您需要在 Ad Manager 中检查您的定位条件。
我想多次使用同一标记请求广告,但我只会收到第一个请求的广告。如何解决此问题?
如果您多次请求广告,则需要让广告服务器知道这些请求是合法请求,而非意外重复。SDK 通过两个快速 API 调用为您执行此操作:
  1. AdsManager 实例调用 destroy()。这可防止在您对 contentComplete() 进行以下调用时播放任何后贴片广告。当您发出下一个请求时,您会获得一个新的 AdsManager
  2. AdsLoader 实例调用 contentComplete()。这会重置该 SDK,因此新的广告请求看起来不会与之前的广告请求重复。
完成上述两次调用后,您可以对 AdsLoader 实例调用 requestAds(),获取另一组用于播放新视频的广告。
如何使用 IMA SDK 请求重叠式广告和全幅 AdSense 广告?

要使用 SDK 请求 AdSense 广告,您首先需要获取 AdSense 广告代码。如需了解详情,请访问 AdSense 视频广告页面。获取代码后,您需要按照以下步骤发出叠加层或全幅广告请求:

重叠式广告
  1. AdsRequest 中,将 ViewMode 设置为 NORMAL
  2. 在您的广告代码中,添加参数 overlay=1
全幅广告
  1. AdsRequest 中,将 ViewMode 设置为 FULLSCREEN
  2. 在您的广告代码中,添加参数 overlay=0
点击广告时收到了“点击后到达网址无效”错误。可能的原因是什么?
此错误最常见的原因是点击后到达网址未正确转义。如果您看到此错误,请检查以确保您的 VAST 响应中的点击后到达网址已正确转义。
为什么我会看到“VAST 文档为空”错误?
如果广告代码返回空的 VAST 文档,则表示广告未正确投放,就会出现此错误。请与您的客户经理或广告服务器代表联系,了解广告代码无法正常工作的原因。
我可以更改跳过广告框或其他界面元素的大小/文字吗?
IMA SDK 不支持更改界面元素的布局、大小或内容。 如需详细了解界面元素,请参阅 AdsManager.uiElements
HTML5 SDK 是否支持原生视频控件?
不可以,HTML5 SDK 不支持原生控件。
在我的 HTML5 实现中,看到“Failed to perform 'play' on 'HTMLMediaElement': API can only initing by a user gesible”。如何解决此问题?
在移动设备上,必须因用户操作(例如点按)而调用 adDisplayContainer.initialize()。如果您看到此错误,很可能是在非用户启动的上下文中调用它。请注意,它必须是用户操作的直接结果。例如,如果您通过播放视频来响应“点按”事件,然后使用视频播放器的“播放”事件调用 initialize(),则 SDK 会返回此错误。您必须调用 initialize() 作为点按事件本身的结果。
如何处理广告点击的键盘焦点?
如果您使用播放器控件,则可能会注意到,在点击 adDisplayContainer 后,控件将不再工作。这是因为在用户点击广告后,系统会将键盘焦点切换到 IMA iframe。如需将键盘焦点置于内容播放器上,请使用 CLICK 事件将键盘焦点转移回所需的容器。如需了解详情,请参阅以下代码段:
adsManager.addEventListener(
      google.ima.AdEvent.Type.CLICK,
      function(){
        window.focus();
        // Or another method to return focus to the desired container.
      });