定位

本指南介绍如何向广告请求提供定位信息。

要查看广告定位的实际运作情况,请下载 Objective-C 或 Swift 语言的 iOS API Demo 应用。

下载 API Demo

前提条件

DFPRequest

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

自定义定位

要设置网页级自定义定位,请使用自定义定位信息字典设置 DFPRequest 上的 CustomTargeting 属性。可以为一个键分配多个值,如此处的 section

Objective-C

DFPRequest *request = [DFPRequest request];
request.customTargeting = @{@"gender" : @"male", @"section" : @[ @"sports", @"finance"]};

Swift

let request = DFPRequest()
request.customTargeting = ["gender": "male", "section": ["sports", "finance"]]

有关 iOS API Demo 应用中自定义定位的实现方式,请参阅 DFP 广告管理系统(以下简称 DFP)自定义定位示例。

Objective-C Swift

类别排除

要设置网页级广告类别排除对象,请使用排除标签数组设置 DFPRequest 上的 categoryExclusions 属性。

Objective-C

DFPRequest *request = [DFPRequest request];
request.categoryExclusions = @[@"cars", @"pets"];

Swift

let request = DFPRequest()
request.categoryExclusions = ["cars", "pets"]

有关 iOS API Demo 应用中类别排除的实现方式,请参阅 DFP 类别排除示例。

Objective-C Swift

地理位置

如果您的应用已使用 CoreLocation,则可以使用现有的 CLLocationManager 实例来设置准确的地理位置。

Objective-C

DFPRequest *request = [DFPRequest request];
CLLocation *currentLocation = locationManager.location;
if (currentLocation) {
  [request setLocationWithLatitude:currentLocation.coordinate.latitude
                         longitude:currentLocation.coordinate.longitude
                          accuracy:currentLocation.horizontalAccuracy];
}

Swift

let request = DFPRequest()
if let currentLocation = locationManager.location {
  request.setLocationWithLatitude(CGFloat(currentLocation.coordinate.latitude),
      longitude: CGFloat(currentLocation.coordinate.longitude),
      accuracy: CGFloat(currentLocation.horizontalAccuracy))
}

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

性别

使用 AdMob 补余广告或 SDK 中介广告素材时,您可以在广告请求中提供性别,以便进行定位。此信息也可以转发到广告联盟中介适配器。

Objective-C

DFPRequest *request = [DFPRequest request];
request.gender = kGADGenderMale;

Swift

let request = DFPRequest()
request.gender = .Male

请参见 GADRequest.h 中的 GADGender 枚举,以了解关于性别选项的完整列表。

生日

使用 AdMob 补余广告或 SDK 中介广告素材时,可以在广告请求中提供生日,以便进行定位。此信息也可以转发到广告联盟中介适配器。

Objective-C

DFPRequest *request = [DFPRequest request];
NSDateComponents *components = [[NSDateComponents alloc] init];
components.month = 3;
components.day = 13;
components.year = 1976;
request.birthday = [[NSCalendar currentCalendar] dateFromComponents:components];

Swift

let request = DFPRequest()
let components = NSDateComponents()
components.month = 3
components.day = 13
components.year = 1976
request.birthday = NSCalendar.currentCalendar().dateFromComponents(components)

面向儿童的设置

根据儿童在线隐私保护法 (COPPA) 的规定,我们提供一项设置,名为“用于认定为面向儿童的标记”。

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

  • 如果您将 tagForChildDirectedTreatment 设置为 YES 或“true”,则表示您的内容应被视为符合 COPPA 目标的面向儿童的内容。
  • 如果您将 tagForChildDirectedTreatment 设置为 NO 或“false”,则表示您的内容不应被视为符合 COPPA 目标的面向儿童的内容。
  • 如果您不设置 tagForChildDirectedTreatment,广告请求中将不包含有关如何根据 COPPA 对待您的内容的指示。

Objective-C

DFPRequest *request = [DFPRequest request];
[request tagForChildDirectedTreatment:YES];

Swift

let request = DFPRequest()
request.tagForChildDirectedTreatment(true)

设置此标记,即表示您确认此通知准确无误,且您有权代表应用的所有者行事。您了解,滥用此设置可能会导致您的 Google 帐号被终止。

内容网址

如果应用用于获利的内容与网页的内容相匹配,那么应用可以传递内容网址来进行关键字定位。

例如,如果您的应用投放博客文章,并在显示博客文章 http://googleadsdeveloper.blogspot.com/2013/10/upgrade-to-new-google-mobile-ads-sdk.html 的内容的同时请求广告,则您可以传递此网址来定位相关的关键字:

Objective-C

DFPRequest *request = [DFPRequest request];
request.contentURL = @"http://googleadsdeveloper.blogspot.com/2013/10/upgrade-to-new-google-mobile-ads-sdk.html";

Swift

let request = DFPRequest()
request.contentURL = "http://googleadsdeveloper.blogspot.com/2013/10/upgrade-to-new-google-mobile-ads-sdk.html"

利用定位加载广告

一旦设置了所有请求定位信息,请使用您的 DFPRequest 实例调用 DFPBannerView 上的 loadRequest

Objective-C

DFPRequest *request = [DFPRequest request];
request.gender = kGADGenderMale;
NSDateComponents *components = [[NSDateComponents alloc] init];
components.month = 3;
components.day = 13;
components.year = 1976;
request.birthday = [[NSCalendar currentCalendar] dateFromComponents:components];
CLLocation *currentLocation = locationManager.location;
if (currentLocation) {
  [request setLocationWithLatitude:currentLocation.coordinate.latitude
                         longitude:currentLocation.coordinate.longitude
                          accuracy:currentLocation.horizontalAccuracy];
}
[request tagForChildDirectedTreatment:YES];
request.contentURL = @"http://googleadsdeveloper.blogspot.com/2013/10/upgrade-to-new-google-admob.html";
[self.adView loadRequest:request];

Swift

let request = DFPRequest()
request.gender = .Male
let components = NSDateComponents()
components.month = 3
components.day = 13
components.year = 1976
request.birthday = NSCalendar.currentCalendar().dateFromComponents(components)
if let currentLocation = locationManager.location {
  request.setLocationWithLatitude(CGFloat(currentLocation.coordinate.latitude),
      longitude: CGFloat(currentLocation.coordinate.longitude),
      accuracy: CGFloat(currentLocation.horizontalAccuracy))
}
request.tagForChildDirectedTreatment(true)
request.contentURL = "http://googleadsdeveloper.blogspot.com/2013/10/upgrade-to-new-google-admob.html"
adView.loadRequest(request)

发布商提供的标识符

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

通过 DFPRequest 完成 PPID 的设置:

Objective-C

DFPRequest *request = [DFPRequest request];
request.publisherProvidedID = @"AB123456789";

Swift

let request = DFPRequest()
request.publisherProvidedID = "AB123456789"

有关 iOS API Demo 应用中发布商提供的标识符 (PPID) 的实现,请参阅 DFP PPID 示例。

Objective-C Swift

常见问题解答

是否可以使用 request.testDevices 发布应用?
可以。测试广告仅在您指定的具体设备上展示,因此您的所有用户仍会收到发布的广告。
当广告自动刷新时会使用什么定位?
广告刷新时,之前指定的 DFPRequest 对象会再次用于定位。要设置新的定位,请使用新的 DFPRequest 对象明确调用 DFPBannerView 上的 loadRequest
如何将更多定位参数传递到中介广告联盟?
请参阅发布商中介指南以了解如何将定位发送到中介广告联盟。