서버 간: iOS 클라이언트 설정 가이드

내부 미디에이션은 공개적으로 제공되지 않습니다.

현재 Audience Network를 사용한 내부 입찰은 비공개 베타이고 공개적으로 제공되지 않습니다. 변경 사항이 있을 경우 추가적인 업데이트를 제공하겠습니다.

또는 Facebook과 파트너를 맺은 미디에이션 플랫폼 중 하나를 통해 Audience Network Bidding에 액세스할 수 있습니다.

이 가이드에서는 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가 입찰에 성공하면 광고를 읽어들입니다. 그렇지 않은 경우 경매 서버에서 수신한 오류 메시지를 표시합니다.

다음: 클라이언트 단계별 통합