Google 发布商广告代码中的广告个性化设置可在全球任何地区设定。
针对使用 GPT 代码和 AdSense 代码的网页的广告个性化设置
发出广告请求
默认情况下,Google 在收到广告请求后会投放个性化广告,具体选择的广告取决于网页的内容以及访问该网页的具体用户的历史记录。Google 也支持投放非个性化广告。详细了解个性化广告和非个性化广告
如果您希望向一些用户投放个性化广告,而向另外一些用户投放非个性化广告,则可使用 GPT 和 AdSense/Ad Manager 异步广告代码,它们可帮助发布商按网页触发非个性化广告投放。如果您允许自己的所有用户或部分用户在个性化广告与非个性化广告间进行选择,这些广告代码可能就会派上用场。
非个性化广告不会将 Cookie 用于实现广告个性化,但会使用它们来确保广告展示频次不超过频次上限以及生成汇总的广告报告。因此,在《电子隐私指令》中有关 Cookie 使用的规定所适用的国家/地区,需就使用 Cookie 征得用户同意后,才能将其用于前述目的。详细了解非个性化广告。
使用 GPT 代码设置 NPA=1
使用下面的方法:googletag.pubads().setPrivacySettings({nonPersonalizedAds: true})
setCookieOptions()
调用不适用于 GDPR。
使用 GPT 代码设置 PPT=1
使用下面的方法:googletag.setConfig({privacyTreatments: { treatments: ["disablePersonalization"]}})
使用 AdSense 和 Ad Exchange 异步广告代码设置 NPA=1
设置下面的值:(adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=1
您只需在浏览器的“开发者工具”中找到相应广告请求,然后看看其中是否有参数 &npa=1
,即可验证广告代码所请求的是否为非个性化广告。
调用 setPrivacySettings({nonPersonalizedAds: false})
或设置 requestNonPersonalizedAds=0
会重新启用个性化。
使用 AdSense 和 Ad Exchange 异步广告代码设置 PPT=1
- 方法 1:Push API
使用push
方法:(adsbygoogle=window.adsbygoogle||[]).push({ params: {google_privacy_treatments: 'disablePersonalization'}})
您只需在浏览器的“开发者工具”中找到相应广告请求,然后看看其中是否有参数&ppt=1
,即可验证广告代码所请求的是否为非个性化广告。
- 方法 2:标头标记 API
在adsbygoogle
脚本标记上设置data-privacy-treatments
,例如:
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" data-privacy-treatments='disablePersonalization'></script>
暂停广告请求
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.js
和 adsbygoogle.js
。其他类型的 Google 广告代码不支持暂停广告请求;因此,如果采用这些类型的代码,您就需要避免在您还未准备好请求个性化广告或非个性化广告之时加载它们。
针对 AMP 网页的广告个性化设置
来自 AMP 网页的广告请求提供的广告个性化设置与之前所述的非 AMP 网页相同:发布商可以选择向某个地理位置内的所有用户投放非个性化广告,也可以根据用户意见来选择是投放个性化广告还是非个性化广告。下文说明了对于通过 <amp-ad type=”doubleclick”>
或 <amp-ad type=”adsense”>
请求广告的 AMP 网页,如何针对每种情形进行配置。
向某个地理位置内的所有用户投放非个性化广告
如果您的 AMP 广告代码不使用实时配置 (RTC),您只需在 Google Ad Manager 界面或 AdSense 界面中启用非个性化广告投放即可,而无需进一步更改 AMP 网页。
如果您的 AMP 广告代码使用实时配置 (RTC),您可以对网页进行配置,以避免针对接收非个性化广告的用户(例如,位于 EEA、英国和瑞士境内的那些用户)发送 RTC 请求。下面列出了为实现此目的而必需的组件和配置(amp-geo
和 amp-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 出价邀约,同时向 DFP/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-consent
和 data-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
可将广告请求标记为非个性化广告请求。如果不指定该参数,则默认为投放个性化广告。例如:
https://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 User Messaging Platform (UMP) SDK
请查看 Google Developers 文档(iOS UMP SDK、Android UMP SDK),详细了解 User Messaging Platform SDK 如何帮助您的应用遵守 Google 的欧盟地区用户意见征求政策。
Google 互动式媒体广告 SDK(适用于视频)
对于视频请求,通过将 npa=1
参数附加到您的广告代码,即可表明您希望 Google 将您的视频内容视为非个性化内容。为此,您可以使用手动构建的主视频广告代码,也可以使用任何针对特定平台的 IMA SDK(HTML5 IMA SDK、iOS IMA SDK、Android IMA SDK、Google Cast IMA SDK)。
如果您的视频播放器使用 Google Ad Manager 的动态广告插播功能,它还可以在视频点播 (VOD) 或直播请求中包含 npa=1
参数,从而将该参数传递给所包含的各个广告请求(DAI HTML5 SDK、DAI Cast SDK、DAI iOS SDK、DAI Android SDK、DAI Roku SDK、DAI tvOS SDK)。