La médiation interne n’est pas publique
La médiation interne avec Audience Network est actuellement en version bêta fermée et n’est pas publique. Nous procéderons à une mise à jour en cas de changement.
En attendant, vous pouvez accéder aux enchères de l’Audience Network par le biais de l’une des plateformes de médiation avec lesquelles nous sommes partenaires.
Ce guide décrit la marche à suivre pour créer une application cliente iOS. Dans le guide détaillé ci-dessous, nous prendrons l’exemple de l’envoi d’une demande de vente aux enchères vers votre serveur de vente aux enchères sur une publicité interstitielle. Vous devez avoir déjà l’habitude d’utiliser les publicités interstitielles de l’Audience Network. Les enchères prennent également en charge les formats Publicité native, Bandeau publicitaire, Publicité interstitielle, Vidéo in-stream et Vidéo avec récompense. Lorsque vous utilisez des formats publicitaires autres que la publicité interstitielle pour une enchère, vous pouvez modifier vos paramètres de serveur.
Côté client, nous devons rassembler les paramètres requis pour la demande de vente aux enchères et envoyer cette dernière au serveur de vente aux enchères, à l’aide d’une requête HTTP. Voici un exemple d’implémentation dans iOS de la demande de vente aux enchères spécifiée par le format ci-dessus :
- (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; }
Voici l’exemple d’extrait de code d’une fonction statique qui envoie la demande de vente aux enchères au serveur et invoque les méthodes de rappel avec la réponse du serveur :
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];
Sur l’application cliente, en utilisant les paramètres de réponse, nous pouvons déterminer la plateforme qui a remporté la vente aux enchères et charger la publicité. Si la vente aux enchères a réussi et que l’Audience Network l’a remportée, les paramètres de réponse contiendront une chaîne de charge utile depuis laquelle nous pouvons charger la publicité. Nous pouvons appeler la méthode loadAdWithBidPayload
sur la bonne classe de format publicitaire pour charger la publicité. Voici les méthodes implémentées traitant les rappels de demande de vente aux enchères :
- (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]; }
L’exemple d’application chargera donc la publicité si l’Audience Network a remporté l’enchère ou affichera le message d’erreur reçu du serveur de vente aux enchères.