欧盟地区用户意见征求政策

Google 发布商广告代码中的广告个性化设置

根据 Google 更新后的欧盟地区用户意见征求政策,您必须向位于欧洲经济区 (EEA) 内的用户披露相关信息;在法律有相应要求的情况下,必须就 Cookie 或其他本地存储方式的使用征得他们的同意;如果需要收集、共享和使用个人数据来实现广告个性化,也须就此征得他们的同意。此政策反映了欧盟《电子隐私指令》(ePrivacy Directive) 和《一般数据保护条例》(GDPR) 的要求。

针对使用 GPT 代码和 AdSense 代码的网页的广告个性化设置

发出广告请求

默认情况下,Google 在收到广告请求后会投放个性化广告,具体选择的广告取决于网页的内容以及访问该网页的具体用户的历史记录。Google 也支持投放非个性化广告。详细了解个性化广告和非个性化广告

如果您符合我们意见征求政策的要求,并且希望向欧洲经济区内访问您网站的所有用户投放个性化广告,则无需对您的广告代码进行任何更改。您可以在 AdSense 内容广告界面或 Google Ad Manager 界面中启用非个性化广告投放。

如果您希望向一些用户投放个性化广告,而向另外一些用户投放非个性化广告,则可使用 GPT 和 AdSense/Ad Manager 异步广告代码,它们可帮助发布商按照网页触发非个性化广告投放。如果您允许自己的所有用户或部分用户在个性化广告与非个性化广告间进行选择,这些广告代码可能就会派上用场。

非个性化广告不会将 Cookie 用于实现广告个性化,但会使用它们来确保广告展示频次不超过频次上限、生成汇总的广告报告以及打击欺诈和滥用行为。因此,在《电子隐私指令》中有关 Cookie 使用的规定所适用的国家/地区,需就使用 Cookie 征得用户同意后,才能将其用于前述目的。详细了解非个性化广告

对于 GPT 代码:

请使用下面的方法:googletag.pubads().setRequestNonPersonalizedAds(1)

对于 AdSense 和 Ad Manager 异步广告代码:

请设置下面的值:(adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=1

对于网页上的下面这些受支持的广告代码发出的后续 Google 广告请求,这些方法将触发非个性化广告请求:GPT、GPT Light、AdSense 或 Ad Manager 异步广告代码 (adsbygoogle.js)、旧版的 AdSense 同步代码 (show_ads.js) 以及 IMA SDK。在浏览器的开发者工具中找到相关广告请求,然后看看是否有参数 &npa=1,即可验证广告代码请求的是否为非个性化广告。

调用 setRequestNonPersonalizedAds(0) 或设置 requestNonPersonalizedAds=0 会重新启用个性化。如果某个网页包含多种 Google 广告代码,例如同时包含 GPT 代码和 AdSense/Ad Manager 异步代码,则可能无法预测哪种代码会先执行,因此为了安全起见,请对每种代码使用非个性化广告控件。

暂停广告请求

GPT 和 AdSense/Ad Manager 异步代码支持先加载您的网页,等到出现明确信号后才开始发出广告请求。如果您需要等到用户与意见征求界面互动后再发出广告请求,这类代码可能会很有用。

在使用 GPT 时:如果您采用异步模式,则可以延迟发出广告请求。

  • 使用 disableInitialLoad() 函数阻止此代码在网页首次加载时发送广告请求。您必须在使用 display() 触发任何广告请求之前执行此函数。
  • 像往常一样调用 googletag.cmd.push(...) 来设置广告位。
  • 在用户选择是否同意后,根据需要调用 setRequestNonPersonalizedAds(1)
  • 使用 refresh() 函数继续发送广告请求。
  • 如果您不调用 refresh(),系统将不会显示任何广告。如果您使用 enableSyncRendering(),则无法延迟发出请求。

在使用 AdSense 或 Ad Manager 异步广告代码时

  • 使用 (adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=1 阻止此代码发送广告请求。您必须在使用 adsbygoogle.push(...) 触发任何广告请求之前执行此函数。
  • 像往常一样调用 adsbygoogle.push(...) 来设置广告位。
  • 在用户选择是否同意后,根据需要设置 requestNonPersonalizedAds=1
  • 使用 (adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=0 继续发送广告请求。
  • 如果您不设置 pauseAdRequests=0,系统将不会显示任何广告。

此方法会阻止发送广告请求,但各种脚本依然会加载。虽然可以读取 Google 网域中的现有 Cookie,但不会设置新的 Cookie。与现有 Cookie 关联的所有数据都不会用于投放广告和衡量广告效果。

如果您的意见征求管理解决方案提供了一种可将脚本延迟到用户做出选择后再加载的方法,那么我们还可以采取另外一种延迟发出广告请求的方案,即延迟加载 gpt.jsadsbygoogle.js。其他类型的 Google 广告代码不支持暂停广告请求;因此,如果采用这些类型的代码,您就需要避免在您还未准备好请求个性化广告或非个性化广告之时加载它们。

有关 AdSense 代码的更多帮助信息,请参阅广告个性化设置的广告代码示例

针对 AMP 网页的广告个性化设置

来自 AMP 网页的广告请求提供的广告个性化设置与之前所述的非 AMP 网页相同:发布商可以选择向位于欧洲经济区 (EEA) 内的所有用户投放非个性化广告,也可以根据用户意见来选择是投放个性化广告还是非个性化广告。下文说明了对于通过 <amp-ad type=”doubleclick”><amp-ad type=”adsense”> 请求广告的 AMP 网页,如何针对每种情形进行配置。

向所有欧洲经济区 (EEA) 用户投放非个性化广告

如果您的 AMP 广告代码不使用实时配置 (RTC),您只需在 Google Ad Manager 界面或 AdSense 界面中启用非个性化广告投放即可,而无需进一步更改 AMP 网页。

如果您的 AMP 广告代码使用实时配置 (RTC),则您可以对网页进行配置,以避免针对接收非个性化广告的用户(例如,位于欧洲经济区 (EEA) 内的那些用户)发送 RTC 请求。下面列出了为实现此目的而必需的组件和配置(amp-geoamp-consent)。


<!-- 首先我们需要设置 amp-geo 扩展程序。我们来定义一个群组:“eea”,其中包含欧洲经济区的所有国家/地区。由于 EEA 成员国/地区可能会随时间推移而发生变化,因此您需要确保该列表随时处于最新状态。-->
amp-geo layout="nodisplay"
  <script type="application/json"
    {
      "ISOCountryGroups": {
        "eea": [ "at", "be", "bg", "cy", "cz", "de", "dk", "ee", "es", "fi", "fr",
        "gb", "gr", "hr", "hu", "ie", "is", "it", "li", "lt", "lu", "lv", "mt", "nl",
        "no", "pl", "pt", "ro", "se", "si", "sk"]
      }
    }
  </script>
</amp-geo>

<!-- 接下来,我们需要将用户意见征求超时的时长设置为 0(即:根本不显示用户意见征求界面),并设置在默认情况下显示“rejected”用户意见状态。这样就会停止发出 RTC 出价邀约,同时向 Ad Manager/AdSense 发出投放非个性化广告的信号。-->
<amp-consent layout="nodisplay" id="consent-element">
  <script type="application/json">
    {
      "consents": {
        "my_consent": {
          "promptIfUnknownForGeoGroup": "eea"
        }
      }
      "policy": {
        "default": {
          "waitFor": {
            "my_consent": []
          }
          "timeout": {
            "seconds": 0,
            "fallbackAction": "reject"
          }
        }
      }
    }
  </script>
</amp-consent>

您必须将 data-block-on-consent 属性添加到相应网页上的所有现有 amp-ad 组件中,如下所示:

<!-- 最后我们来设置广告代码,使其屏蔽用户意见征求页面-->
<amp-ad data-block-on-consent
    width=320 height=50
    type="doubleclick"
    data-slot="/4119129/mobile_ad_banner">
</amp-ad>

根据用户意见投放个性化广告/非个性化广告

由于 AMP 不允许使用自定义 JavaScript,因此,是请求个性化广告还是非个性化广告,取决于 amp-consent 组件的配置以及 data-block-on-consentdata-npa-on-unknown-consent 属性。假设您已经配置了一个 amp-consent 组件,并使用 data-block-on-consent 将该组件关联到相应网页上的所有 <amp-ad> 代码:

  • 如果用户对 amp-consent 组件做出了肯定的响应(用户接受了意见征求提示),网页将正常发出广告请求。
  • 如果用户对 amp-consent 组件做出了否定的响应(用户拒绝了意见征求提示),网页将请求非个性化广告。
  • 如果用户对 amp-consent 的响应未知(用户关闭了意见征求提示)
    • 默认情况下,网页不会发出任何广告请求
    • 如果 data-npa-on-unknown-consent 设为 true,网页将请求非个性化广告
  • 如果您通过配置 amp-geo 组件,使意见征求界面不向位于特定地理位置的用户显示,网页将正常发送请求。

如果您的 <amp-ad> 代码未使用 data-block-on-consent,或者 amp-consent 组件尚未正确配置,网页将正常发送请求。

下例所示的配置会向位于 EEA 内的所有用户发出意见征求提示,从而引发如上所述的行为:

<!-- 首先我们需要设置 amp-geo 扩展程序。我们来定义一个群组:“eea”,其中包含欧洲经济区的所有国家/地区。由于 EEA 成员国/地区可能会随时间推移而发生变化,因此您需要确保该列表随时处于最新状态。-->
<amp-geo layout="nodisplay">
  <script type="application/json">
    {
      "ISOCountryGroups": {
        "eea": [ "at", "be", "bg", "cy", "cz", "de", "dk", "ee", "es", "fi", "fr",
        "gb", "gr", "hr", "hu", "ie", "is", "it", "li", "lt", "lu", "lv", "mt", "nl",
        "no", "pl", "pt", "ro", "se", "si", "sk"]
      }
    }
  </script>
</amp-geo>
 
<!-- 接下来,我们需要为“eea”国家/地区群组中的用户设置用户意见征求-->
<amp-consent layout="nodisplay" id="consent-element">
  <script type="application/json">
    {
      "consents": {
        "my_consent": {
          "promptIfUnknownForGeoGroup": "eea",
          "promptUI": "myConsentFlow"
        }
      }
    }
  </script> 
</amp-consent>
 

<!-- 最后,我们设置广告代码,使其在必要时等待用户意见-->
<amp-ad data-block-on-consent
    width=320 height=50
    type="doubleclick"
    data-slot="/4119129/mobile_ad_banner">
</amp-ad>
 

请注意,您还可通过其他方式有选择性地向用户发出意见征求提示,包括配置相应网页以将 CORS POST 请求发送给您通过 checkConsentHref 配置的端点。如需了解详情,请阅读 amp-consent 文档

针对其他代码的广告个性化设置

GPT 回传代码

如果您使用的是 GPT 回传代码,则可以在自己的 API 调用中添加以下代码,将广告请求标记为非个性化广告请求:

googletag.pubads().setRequestNonPersonalizedAds(int options);

options 参数设置为整数值 1 可将广告请求标记为非个性化广告请求 (NPA);而设置为 0 则表示将广告请求标记为符合个性化广告投放条件。

如果不指定此设置,则默认为允许投放个性化广告。

示例:

<script src="https://www.googletagservices.com/tag/js/gpt.js">
googletag.pubads().setRequestNonPersonalizedAds(1);
googletag.pubads().definePassback("123456/ad/unit", [100,200])
    .display();
</script>

简单网址

如果您使用的是简单网址,则可以直接在代码请求网址中添加 npa=[int] 参数,从而将广告请求标记为非个性化广告请求。我们建议您在代码中靠前的位置指定该参数,以避免任何截断风险。指定 npa=1 可将广告请求标记为非个性化广告请求。如果不指定该参数,则默认为投放个性化广告。例如:

http://pubads.g.doubleclick.net/gampad/ad?iu=/12345/adunit&sz=728x90&npa=1&c=12345

AdSense 搜索广告

默认情况下,Google 在收到广告请求后会投放个性化广告,具体选择的广告取决于用户的搜索查询以及执行搜索的具体用户的历史记录。Google 也支持投放非个性化广告。详细了解个性化广告和非个性化广告

如果您希望向一些用户投放个性化广告,而向另外一些用户投放非个性化广告,则可使用 AdSense 搜索广告代码,它们可帮助发布商按照网页触发非个性化广告投放。如果您允许自己的所有用户或部分用户在个性化广告与非个性化广告间进行选择,这些广告代码可能就会派上用场。

对于自定义搜索广告 - 网页广告代码:将以下内容添加到自定义搜索广告代码中的 pageOptions
personalizedAds: false,


对于 AdMob 代码:
builder.setAdvancedOptionValue("personalizedAds", "false");


对于 iOS 代码:
[request setAdvancedOptionValue:@"false" forKey:@"personalizedAds"];

这些方法会针对特定请求触发非个性化广告请求。这是一个无状态参数。如果未针对用户在后续请求中设置该参数,则此行为将恢复为默认行为,即请求个性化广告。

Google Mobile Ads SDK

要详细了解 Google 移动广告 SDK,请访问应用开发者网站(iOS GMA SDKAndroid GMA SDK)。

Google 互动式媒体广告 SDK(适用于视频)

对于视频请求,您可以在将 npa=1 参数附加到您的广告代码时,指定希望 Google 将您的视频内容视为非个性化内容。为此,您可以使用手动构建的主视频代码,也可以使用任何针对特定平台的 IMA SDK(HTML5 IMA SDKiOS IMA SDKAndroid IMA SDKGoogle Cast IMA SDK)。

如果您的视频播放器使用 Google Ad Manager 的动态广告插播功能,它还可以在视频点播 (VOD) 或直播请求中包含 npa=1 参数,从而将该参数传递到所包含的任何广告请求中(DAI HTML5 SDKDAI Cast SDKDAI iOS SDKDAI Android SDKDAI Roku SDKDAI tvOS SDK)。

该内容对您有帮助吗?
您有什么改进建议?