L’API Native Ad vous permet de créer une expérience personnalisée pour les publicités que vous diffusez dans votre application. Lorsque vous utilisez l’API Native Ad, vous ne recevez pas une publicité prête à être affichée, mais une série de propriétés de cette publicité, comme un titre, une image et un call-to-action, que vous devez utiliser pour créer une UIView dans laquelle la publicité s’affichera.
N’hésitez pas à consulter notre guide sur les publicités natives lorsque vous en créez dans votre application.
Passons à la mise en œuvre du placement publicitaire natif suivant. Vous allez créer les affichages suivants pour notre publicité native :
Affichage nº 1 : icône de l’annonceurAffichage nº 2 : titre de la publicitéAffichage nº 3 : étiquette sponsoriséeAffichage nº 4 : choix de l’annonceur | Affichage nº 5 : affichage du contenu multimédia de la publicitéAffichage nº 6 : contexte socialAffichage nº 7 : corps de la publicitéAffichage nº 8 : bouton call-to-action de la publicité |
Assurez-vous d’avoir terminé le guide de démarrage et le guide Démarrer avec iOS avant de commencer.
Lors de la conception de la publicité native et de la bannière publicitaire, assurez-vous d’avoir suivi la règle de conception pour iOS pour offrir une expérience utilisateur optimale.
Main.storyboard
. Ajoutez un élément UIView à l’élément View principal, puis nommez-le adUIView
. adIconImageView
(FBAdIconView), adTitleLabel
(UILabel), adCoverMediaView
(FBMediaView), adSocialContext
(UILabel), adCallToActionButton
(UIButton), adOptionsView
(FBAdOptionsView), adBodyLabel
(UILabel), sponsoredLabel
(UILabel) sous adUIView
comme l’indique l’image ci-dessous. ViewController.m
(ViewController.swift
si vous utilisez Swift), puis faites glisser adUIView
dans l’objet ViewController. Vous pouvez le nommer adUIView
. Ensuite, vous devrez procéder de la même façon pour adIconImageView
, adTitleLabel
, adCoverMediaView
, adSocialContext
, adCallToActionButton
, adOptionsView
, adBodyLabel
et sponsoredLabel
.Maintenant que vous avez créé tous les éléments de l’interface utilisateur nécessaires à l’affichage d’une publicité native, l’étape suivante consiste à charger la publicité native et à associer le contenu à ces éléments d’interface.
ViewController
est conforme au protocole FBNativeAdDelegate
, puis ajoutez une variable d’instance FBNativeAd
.
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBNativeAdDelegate {
private var nativeAd: FBNativeAd?
}
viewDidLoad
, ajoutez les lignes de code suivantes pour charger le contenu publicitaire natif.
override func viewDidLoad() {
super.viewDidLoad()
let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd()
}
L’ID correspondant à YOUR_PLACEMENT_ID
est un ID temporaire à des fins de tests uniquement.
Si vous utilisez cet ID temporaire dans votre code en direct, vos utilisateurs et utilisatrices ne recevront pas de publicité, mais une erreur No Fill. Vous devez revenir ici après le test et remplacer cet ID temporaire par un ID de placement en direct.
Pour découvrir comment générer un ID de placement en direct, reportez-vous à Configuration d’Audience Network.
ViewController
implémente la méthode de délégué nativeAdDidLoad
.
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
// 1. If there is an existing valid native ad, unregister the view
if let previousNativeAd = self.nativeAd, previousNativeAd.isAdValid {
previousNativeAd.unregisterView()
}
// 2. Retain a reference to the native ad object
self.nativeAd = nativeAd
// 3. Register what views will be tappable and what the delegate is to notify when a registered view is tapped
// Here only the call-to-action button and the media view are tappable, and the delegate is the view controller
nativeAd.registerView(
forInteraction: adUIView,
mediaView: adCoverMediaView,
iconView: adIconImageView,
viewController: self,
clickableViews: [adCallToActionButton, adCoverMediaView]
)
// 4. Render the ad content onto the view
adTitleLabel.text = nativeAd.advertiserName
adBodyLabel.text = nativeAd.bodyText
adSocialContextLabel.text = nativeAd.socialContext
sponsoredLabel.text = nativeAd.sponsoredTranslation
adCallToActionButton.setTitle(nativeAd.callToAction, for: .normal)
adOptionsView.nativeAd = nativeAd
}
Pour garantir une meilleure expérience utilisateur et de meilleurs résultats, vous devez toujours penser à contrôler la zone cliquable de votre publicité pour éviter les clics accidentels. N’hésitez pas à consulter la page Politique relative au SDK de l’Audience Network pour obtenir des détails sur la mise en application du règlement sur les espaces blancs non cliquables.
Lorsque vous diffusez des publicités dans le simulateur, basculez le paramètre sur le mode de test pour afficher les publicités tests. Pour en savoir plus, consultez la section Comment utiliser le mode Test.
Dans l’exemple ci-dessus, le contenu multimédia de la publicité est affiché dans adCoverMediaView
et son type d’objet est FBMediaView
. Lors de l’étape précédente, vous avez appris à utiliser FBMediaView pour charger un contenu multimédia à partir d’un objet FBNativeAd
donné. Cet affichage remplace le chargement manuel d’une image de couverture. Lorsque vous créez le FBMediaView
, sa largeur et sa hauteur peuvent être déterminées par les contraintes de disposition automatiques du storyboard ou elles peuvent être figées dans le code. Cependant, la largeur et la hauteur de l’affichage peuvent ne pas correspondre à l’image de couverture de l’annonce téléchargée plus tard. Pour résoudre cela, l’exemple suivant montre comment connaître le format du contenu, et appliquer une largeur et une hauteur naturelles :
FBMediaViewDelegate
.
class ViewController: UIViewController, FBNativeAdDelegate, FBMediaViewDelegate {
...
}
FBMediaView
en tant que contrôleur d’affichage.
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
adCoverMediaView.delegate = self
}
mediaViewDidLoad
dans votre contrôleur d’affichage.
func mediaViewDidLoad(_ mediaView: FBMediaView) {
let currentAspect = mediaView.frame.size.width / mediaView.frame.size.height
print(currentAspect)
let actualAspect = mediaView.aspectRatio
print(actualAspect)
}
mediaView.aspectRatio
renvoie une valeur CGFloat positive ou 0.0 si aucune publicité n’est actuellement chargée. Sa valeur est valide une fois l’affichage du contenu multimédia chargé. Certaines méthodes définissent la largeur et la hauteur de l’objet FBMediaView en respectant le format du contenu multimédia chargé. Vous pouvez appeler applyNaturalWidth
ou applyNaturalHeight
pour mettre à jour la largeur ou la hauteur de l’objet FBMediaView
afin de respecter le format du contenu multimédia.
Vous avez également la possibilité d’ajouter les fonctions suivantes pour gérer les cas où la publicité native est close ou lorsque l’utilisateur ou l’utilisatrice décide de cliquer dessus.
func nativeAdDidClick(_ nativeAd: FBNativeAd) {
print("Native ad was clicked.")
}
func nativeAdDidFinishHandlingClick(_ nativeAd: FBNativeAd) {
print("Native ad did finish click handling.")
}
func nativeAdWillLogImpression(_ nativeAd: FBNativeAd) {
print("Native ad impression is being captured.")
}
Ajoutez et implémentez la fonction suivante dans votre contrôleur d’affichage pour gérer les échecs de chargement de la publicité.
func nativeAd(_ nativeAd: FBNativeAd, didFailWithError error: Error) {
print("Native ad failed to load with error: \(error.localizedDescription)")
}
let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd(withMediaCachePolicy: .none)
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
...
self.adCoverMediaView.delegate = self
nativeAd.downloadMedia()
self.nativeAd = nativeAd
...
}
registerViewForInteraction
et à afficher la publicité après le rappel de mediaViewDidLoad
. Tous les contenus multimédias doivent être chargés et affichés pour une impression admissible.
func mediaViewDidLoad(_ mediaView: FBMediaView) {
guard let nativeAd = nativeAd else {
return
}
// 1. Register what views will be tappable and what the delegate is to notify when a registered view is tapped
// Here only the call-to-action button and the media view are tappable, and the delegate is the view controller
nativeAd.registerView(
forInteraction: adUIView,
mediaView: mediaView,
iconView: adIconImageView,
viewController: self,
clickableViews: [adCallToActionButton, mediaView]
)
// 2. Render the ad content onto the view
adTitleLabel.text = nativeAd.advertiserName
adBodyLabel.text = nativeAd.bodyText
adSocialContextLabel.text = nativeAd.socialContext
sponsoredLabel.text = nativeAd.sponsoredTranslation
adCallToActionButton.setTitle(nativeAd.callToAction, for: .normal)
adOptionsView.nativeAd = nativeAd
}
NativeAdSample
fait partie du SDK et se situe dans le dossier FBAudienceNetwork/samples
. Ouvrez le projet avec Xcode, et lancez-le sur un appareil ou sur le simulateur. Autres ressources |
Guide de démarrageGuide technique pour démarrer avec Audience Network Exemples de codeExemples d’intégration de publicités d’Audience Network | Questions/réponsesQuestions/réponses sur Audience Network Modèle de publicités nativesUne approche plus pratique lors de l’intégration de publicités natives |