內部中介服務未公開供用戶使用
使用 Audience Network 的內部出價目前為封閉測試版,未公開供用戶使用。若有任何變更,我們將提供進一步的更新。
您可以改為透過我們合作的其中一個中介服務平台存取 Audience Network 出價。
本指南說明建置 iOS 用戶端應用程式的方法。在以下的逐步說明指南中,我們所使用的範例會在插頁廣告上將競價要求發送到競價伺服器。請確認您已熟悉 Audience Network 插頁廣告的使用方法。出價同時支援原生、橫幅、插頁、插播影片和獎勵式影片格式。當您使用的廣告格式不是插頁格式時,可以變更伺服器設定。
在用戶端,我們需要收集競價要求所需的參數,並使用 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];
在用戶端應用程式中使用回應參數時,我們可以判斷贏得競價的平台並載入廣告。如果競價成功且 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 贏得出價時載入廣告,或顯示競價伺服器收到的錯誤訊息。