ระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์: คู่มือการตั้งค่าไคลเอ็นต์สำหรับ 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 ชนะการประมูลราคา หรือแสดงข้อความแสดงข้อผิดพลาดที่ได้รับจากเซิร์ฟเวอร์การประมูลราคา

ขั้นตอนถัดไป: การผสานการทำงานไคลเอ็นต์แบบทีละขั้นตอน