Конфигурация "сервер-сервер": руководство по настройке клиента для iOS

Собственная агрегация не является общедоступной

Собственный биддинг в Audience Network сейчас проходит закрытое бета-тестирование и не является общедоступным. Мы будем держать вас в курсе всех изменений.

В качестве альтернативы вы можете получить доступ к биддингу в Audience Network через одну из платформ агрегации, с которыми мы сотрудничаем.

В этом руководстве рассказывается, как создать клиентское приложение для iOS. В нем используется пример отправки запроса на аукцион на ваш сервер аукциона для межстраничной рекламы. Вы должны уметь работать с межстраничной рекламой Audience Network. Биддинг также поддерживает нативную, баннерную и межстраничную рекламу, видеорекламу In-Stream и видео с вознаграждением. Для любых форматов рекламы, кроме межстраничной, настройки сервера можно изменить.

Пошаговые инструкции для клиента 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 выиграет аукцион, в приложении загрузится объявление. В противном случае будет показано сообщение об ошибке, полученное с сервера аукциона.

Далее: пошаговые инструкции по интеграции клиента