服务器到服务器:iOS 客户端设置指南

内部中介不公开提供

内部 Audience Network 竞价现在处于封测阶段,不公开提供。如有变化,我们将提供最新信息。

作为替代方案,您可以通过与我们合作的中介平台访问 Audience Network 竞价。

本指南将向您介绍如何构建 iOS 客户端应用。在下面的分步指南中,我们将使用该示例:在插屏广告中向您的竞拍服务器发送竞拍请求。请确保您已经熟悉 Audience Network 插屏广告的使用方法。竞价还支持原生广告、横幅广告、插屏广告、视频插播广告和激励视频广告格式。在使用除插屏广告外的广告格式时,您可以更改服务器设置

前提条件

iOS 客户端设置步骤

第 1 步:从 iOS 客户端发出竞拍请求

第 2 步:从 iOS 客户端上的竞价响应加载广告

iOS 客户端设置步骤

第 1 步:从 iOS 客户端发出竞拍请求

我们需要在客户端上收集竞拍请求所需参数,然后使用 HTTP 请求将竞拍请求发送至竞拍服务器。以下 iOS 实施示例展示的是发出由上述格式指定的竞拍请求:

- (NSMutableURLRequest *)getRequest {

NSURL *url = [NSURL URLWithString:@"${AUCTION_SERVER_ENDPOINT}"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSDictionary *buyerToken = @{@"audience_network": [FBAdSettings bidderToken]};
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
NSString *bundleVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSString *idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
int32_t dnt = [[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled] ? 0 : 1;
NSDictionary *bodyDict = @{@"app_id": @"101",
@"placement_id": @"1",
@"bundle": bundleIdentifier,
@"bundle_version": bundleVersion,
@"ifa": idfa,
@"coppa": @0,
@"dnt": [NSNumber numberWithInt:dnt],
@"buyer_tokens": buyerToken,
@"test": @1};
NSData *bodyData = [NSJSONSerialization dataWithJSONObject:bodyDict options:0 error:nil];
[request setHTTPBody:bodyData];
[request setHTTPMethod:@"POST"];
return request;
}

下面是一个静态函数的代码片段示例,该函数可以向服务器发送竞拍请求,并使用服务器响应调用回调方法:

NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithRequest: self.getRequest
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
if (!error) {
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
if (json) {
self.placementId = json[@"placement_id"];
self.adFormat = json[@"ad_format"];
self.platformName = json[@"platform_name"];
self.platformPlacementId = json[@"platform_placement_id"];
self.payload = json[@"bid_payload"];
dispatch_async(dispatch_get_main_queue(), ^{
self.statusLabel.text = @"Ad is available";
});
} else {
NSLog(@"Requesting Error: unknow error.");
dispatch_async(dispatch_get_main_queue(), ^{
self.statusLabel.text = @"Ad is NOT available";
});
}
} else {
NSLog(@"Requesting Error: %@", error.localizedDescription);
self.placementId = nil;
self.adFormat = nil;
self.platformName = nil;
self.platformPlacementId = nil;
self.payload = nil;
dispatch_async(dispatch_get_main_queue(), ^{
self.statusLabel.text = @"Ad is NOT available";
});
}
}] resume];

第 2 步:从 iOS 客户端上的竞价响应加载广告

通过在客户端应用上使用响应参数,我们可以判断哪个平台赢得了竞拍,并加载广告。如果竞拍成功,并且 Audience Network 赢得了竞拍,则响应参数会包含一个我们可以从中加载广告的负载字符串。我们可以对正确的广告格式类调用 loadAdWithBidPayload 方法以加载广告。以下是我们采用的竞拍请求回调方法:

- (IBAction)didShow:(UIButton *)sender {

if ([self.statusLabel.text isEqualToString:@"Ad is NOT available"]) {
return;
}
if (![self.platformName isEqualToString:@"audience_network"] ||
![self.adFormat isEqualToString:@"interstitial"] ||
!self.platformPlacementId) {
self.statusLabel.text = @"Ad is NOT available";
return;
}
self.interstitialAd = [[FBInterstitialAd alloc] initWithPlacementID:self.platformPlacementId];
self.interstitialAd.delegate = self;
[self.interstitialAd loadAdWithBidPayload:self.payload];
}

由此,如果 Audience Network 赢得了竞价,则示例应用会加载广告,否则会显示从竞拍服务器收到的错误消息。

下一步:客户端分步集成