Targeting

本指南介绍如何向广告请求提供定位信息。您可下载 Android API Demo 应用,查看实际示例。

下载 API Demo

前提条件

RequestConfiguration

RequestConfiguration 对象会收集通过 MobileAds 静态方法在全局范围内应用的定位信息。

要更新请求配置,请从现有配置中获取构建工具,执行任何所需的更新,然后按如下所示进行设置:

Java

RequestConfiguration requestConfiguration = MobileAds.getRequestConfiguration().toBuilder().build();
MobileAds.setRequestConfiguration(requestConfiguration);

Kotlin

var requestConfiguration = MobileAds.getRequestConfiguration().toBuilder().build()
MobileAds.setRequestConfiguration(requestConfiguration)

面向儿童的设置

为了遵守《儿童在线隐私保护法》(COPPA) 的规定,我们提供了一项名为“面向儿童的内容的标记”的设置。设置此标记,即表示您确认此通知准确无误,且您有权代表应用的所有者行事。您了解,滥用此设置可能会导致您的 Google 帐号被终止。

作为应用开发者,您可以在发送广告请求时指明是否希望 Google 将您的内容视为面向儿童的内容。如果您指明希望 Google 将您的内容视为面向儿童的内容,我们会采取相应措施以针对该广告请求停用针对用户兴趣投放广告和再营销广告。

通过使用 RequestConfiguration.Builder.setTagForChildDirectedTreatment(int),可将此设置用于所有版本的 Google Play 服务 SDK:

  • 使用 TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE 调用 setTagForChildDirectedTreatment,即表明您希望根据 COPPA 的规定将您的内容视为面向儿童的内容。

  • 使用 TAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE 调用 setTagForChildDirectedTreatment,即表明您不希望根据 COPPA 的规定将您的内容视为面向儿童的内容。

  • 如果您不希望在广告请求中表明您想如何根据 COPPA 的规定来认定您的内容,请使用 TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED 调用 setTagForChildDirectedTreatment

以下示例表明您希望根据《儿童在线隐私保护法》(COPPA) 的规定将您的内容视为面向儿童的内容:

Java

RequestConfiguration requestConfiguration = MobileAds.getRequestConfiguration().toBuilder()
        .setTagForChildDirectedTreatment(TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
        .build();

Kotlin

var requestConfiguration = MobileAds.getRequestConfiguration().toBuilder()
        .setTagForChildDirectedTreatment(TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
        .build()

您可以对广告请求进行标记,确保针对未达到法定承诺年龄的欧洲经济区 (EEA) 用户投放的是合适的广告。这项功能旨在帮助您遵守一般数据保护条例 (GDPR)。需要说明的是,您可能还须承担 GDPR 规定的其他法律义务。具体请查看欧盟发布的指导原则,并咨询您自己的法律顾问。另外请注意,Google 的工具旨在协助发布商遵守法规,但并不能免除任何特定发布商按照法律规定所需承担的义务。 详细了解 GDPR 给发布商带来了哪些影响

使用这项功能时,广告请求中会包含一个用于表示用户位于欧洲且未达到法定承诺年龄的标记 (TFUA) 参数。此参数会禁止针对所有广告请求投放个性化广告(包括再营销广告),并且还会禁止向第三方广告供应商(例如广告衡量像素和第三方广告服务器)发送请求。

与面向儿童的设置一样,RequestConfiguration.Builder 中有用于设置 TFUA 参数的 setTagForUnderAgeOfConsent 方法,其中包括以下选项。

  • 使用 TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE 调用 setTagForUnderAgeOfConsent,即表明您希望按适合未达到法定承诺年龄的欧洲经济区 (EEA) 用户的方式处理该广告请求。

  • 使用 TAG_FOR_UNDER_AGE_OF_CONSENT_FALSE 调用 setTagForUnderAgeOfConsent,即表明您不希望按适合未达到法定承诺年龄的欧洲经济区 (EEA) 用户的方式处理该广告请求。

  • 使用 TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED 调用 setTagForUnderAgeOfConsent,即表明您未明确是否按适合未达到法定承诺年龄的欧洲经济区 (EEA) 用户的方式处理该广告请求。

以下示例表明您希望在广告请求中包含 TFUA 标记:

Java

RequestConfiguration requestConfiguration = MobileAds.getRequestConfiguration().toBuilder()
        .setTagForUnderAgeOfConsent(TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE)
        .build();

Kotlin

var requestConfiguration = MobileAds.getRequestConfiguration().toBuilder()
        .setTagForUnderAgeOfConsent(TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE)
        .build()

不应将用于启用面向儿童的设置的标记和 setTagForUnderAgeOfConsent 同时设置为 true。如果同时设置为 true,则以“面向儿童的设置”为准。

广告请求

PublisherAdRequest对象可收集随广告请求一起发送的定位信息。

地理位置

如果用户已为您的应用授予位置权限,则Ad Manager会自动将此位置数据传递给 SDK。SDK 会使用此数据来改进广告定位,而不需更改您的应用中的任何代码。当然,您可以为广告启用或停用位置数据

自动填充的地理位置信息不会转发到中介广告联盟,而且还可能会被完全停用。因此,SDK 提供了手动设置地理位置的功能。您可以在 AdRequest 中指定地理位置定位信息,如下所示:

Java

PublisherAdRequest request = new PublisherAdRequest.Builder()
        .setLocation(location)
        .build();

Kotlin

val request = PublisherAdRequest.Builder()
        .setLocation(location)
        .build()

用户的地理位置应该通过适当的方法获得。

出于对用户隐私权的尊重,Google 要求所指定的地理位置必须来自您的应用已在使用的信息。

自定义定位

您可以通过 PublisherAdRequest.Builder.addCustomTargeting 传递自定义键值对,以定位 Google Ad Manager 广告系列(订单项):

Java

// Example: Pass custom targeting "age=25".
PublisherAdRequest newRequest = new PublisherAdRequest.Builder()
        .addCustomTargeting("age", "25")
        .build();

Kotlin

// Example: Pass custom targeting "age=25".
var newRequest = PublisherAdRequest.Builder()
        .addCustomTargeting("age", "25")
        .build()

您可以将一个键的多个值作为字符串列表传递。例如,要定位二十多岁中间年龄段而不只是 25 岁的个人:

.addCustomTargeting("age", Arrays.asList("24", "25", "26"))

有关 Android API Demo 应用中自定义定位的实现方式,请参考 Google Ad Manager 自定义定位示例

类别排除

您可以使用 PublisherAdRequest.Builder 提供的 addCategoryExclusion 方法向请求中添加广告位级别的类别排除级别:

Java

// Example: Exclude "automobile" and "boat" categories.
PublisherAdRequest newRequest = new PublisherAdRequest.Builder()
        .addCategoryExclusion("automobile")
        .addCategoryExclusion("boat")
        .build();

Kotlin

// Example: Exclude "automobile" and "boat" categories.
var newRequest = PublisherAdRequest.Builder()
        .addCategoryExclusion("automobile")
        .addCategoryExclusion("boat")
        .build()

有关 Android API Demo 应用中类别排除的实现方式,请参阅 Google Ad Manager 类别排除示例

加载设有定位的广告

设置请求定位信息后,请使用PublisherAdRequest实例在 AdView 上调用 loadAd()

Java

PublisherAdRequest request = new PublisherAdRequest.Builder()
        .setLocation(location)
        .build();
adView.loadAd(request);

Kotlin

val request = PublisherAdRequest.Builder()
        .setLocation(location)
        .build()
adView.loadAd(request)

发布商提供的标识符

您可以设置发布商提供的标识符 (PPID),以用于实现跨设备的频次上限、受众群细分和定位、广告依序轮播和其他基于受众群体的广告投放控制。

以下是设置 PPID 的示例:

Java

PublisherAdRequest adRequest = new PublisherAdRequest.Builder()
        .setPublisherProvidedId("AB123456789")
        .build();

Kotlin

var adRequest = PublisherAdRequest.Builder()
        .setPublisherProvidedId("AB123456789")
        .build()

有关 Android API Demo 应用中发布商提供的标识符 (PPID) 的实现方式,请参阅 Google Ad Manager PPID 示例

内容网址

要为您的应用相关内容提供网址,可以在创建 PublisherAdRequest 时调用 PublisherAdRequest.Builder.setContentUrl

Java

PublisherAdRequest requestWithContent = new PublisherAdRequest.Builder()
        .setContentUrl("https://www.example.com")
        .build();

Kotlin

var requestWithContent = PublisherAdRequest.Builder()
        .setContentUrl("https://www.example.com")
        .build()