Commencer

Ce guide explique comment utiliser le module complémentaire d'annonces natives pour implémenter les annonces natives AdMob dans une application Unity, et décrit les éléments importants à prendre en compte.

Les annonces natives s'adaptent à la fois à la forme et à la fonction de l'expérience utilisateur dans laquelle elles sont placées. Ils correspondent également au design visuel de l'application dans laquelle ils sont diffusés. Le format d'annonces natives AdMob permet aux éditeurs de diffuser des annonces parfaitement intégrées au contenu. Vous pouvez utiliser cette technologie pour mettre en œuvre des affichages très personnalisés qui exploitent pleinement le code natif des applications Unity.

Les annonces natives s'affichent à l'aide des mêmes types que GameObjects avec lesquels vous créez déjà vos applications. Elles peuvent être mises en forme pour correspondre à l'apparence de l'expérience utilisateur dans laquelle elles s'affichent. Lors du chargement d'une annonce native, votre application reçoit un objet natif qui contient ses éléments, et l'application Unity (plutôt que le SDK) les affiche.

Prerequisites

Charger les formats d'annonces natives

Les annonces natives sont chargées via la classe AdLoader, qui possède sa propre classe AdLoader.Builder afin de la personnaliser lors de la création. La méthode ForNativeAd() configure le chargeur d'annonce pour qu'il gère les annonces natives.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

S'inscrire à des événements d'annonce AdLoad

Pour être averti lorsqu'une annonce native se charge ou ne se charge pas correctement, ajoutez des délégués à la classe AdLoader pour les événements répertoriés ci-dessous.

OnNativeAdLoaded

Ce rappel est appelé lorsqu'une annonce native est correctement chargée. Vous devez disposer d'un délégué pour que cet événement puisse accéder à l'annonce chargée.

OnAdFailedToLoad

Ce rappel est appelé lorsqu'une annonce native ne se charge pas.

Charger l'annonce

Une fois que vous avez terminé de créer un AdLoader, appelez sa méthode LoadAd() pour demander une annonce:

adLoader.LoadAd(new AdRequest.Builder().Build());

Regrouper la demande d'annonce

L'extrait de code ci-dessous montre comment créer un AdLoader configuré pour demander des annonces natives, définir des délégués pour les chargements d'annonces ayant réussi et ayant échoué, et effectuer une demande d'annonce.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
    adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
    adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

Gérer les chargements d'annonces ayant échoué

L'événement OnAdFailedToLoad est de type EventHandle<AdFailedToLoadEventArgs>. Vous trouverez ci-dessous les motifs d'échec du chargement d'annonce à partir de cet événement.

private void RequestNativeAd() {
    ...
    adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    Debug.Log("Native ad failed to load: " + args.Message);
}

Afficher une annonce native

Lors du chargement d'une annonce native, l'événement d'annonce du format d'annonce correspondant est appelé. Il incombe ensuite à votre application d'afficher l'annonce, même si cela n'est pas nécessaire.

Gérer le volume des annonces

L'événement OnNativeAdLoaded est de type EventHandler<NativeAdEventArgs>. L'annonce, encapsulée dans un objet NativeAd, peut être récupérée dans NativeAdEventArgs comme suit:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

Récupérer les éléments d'une annonce native

Une fois les annonces chargées, leurs éléments sont accessibles comme illustré ci-dessous. Les éléments graphiques sont renvoyés sous forme d'objets Texture2D, tandis que les éléments textuels sont renvoyés sous la forme d'objets string.

private bool nativeAdLoaded;
private NativeAd nativeAd;

void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for the icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        // Get string for headline asset of native ad.
        string headline = this.nativeAd.GetHeadlineText();
    }
}

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}

Notez que les éléments d'annonce ne doivent être accessibles que dans le thread principal (par exemple, à partir de la méthode Update() d'un script Unity). Notez également que les éléments suivants ne sont pas toujours présents et doivent être vérifiés avant d'être affichés:

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

Élément "Choisir sa pub"

Il s'agit d'une condition requise pour afficher l'élément "Choisir sa pub" dans l'annonce native. Il est également important que l'asset d'annonce "Choisir sa pub" soit facilement visible. Par conséquent, choisissez des couleurs et des images d'arrière-plan appropriées.

Enregistrer des objets GameObject pour l'élément publicitaire

Pour chaque élément d'annonce à afficher, vous devez enregistrer l'élément GameObject afin de l'afficher dans l'application Unity. Chaque méthode permettant d'enregistrer un élément GameObject pour un élément d'annonce renverra une valeur booléenne indiquant si l'enregistrement a abouti. Si l'enregistrement d'un élément d'annonce échoue, les impressions et les clics sur l'annonce native correspondante ne sont pas reconnus.

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register the icon ad asset.
}

L'élément GameObject enregistré pour un élément d'annonce doit comporter un composant Collider convexe correspondant à la taille et à la forme de cet élément GameObject. S'il manque des composants Collider dans les objets GameObject enregistrés pour des éléments d'annonce ou s'ils en comportent un qui n'est pas configuré correctement, les annonces natives ne fonctionneront pas correctement.

Dans l'extrait de code ci-dessous, un BoxCollider est ajouté à GameObject, qui utilise un TextMesh pour afficher l'élément de titre d'une annonce native. Une fois que BoxCollider est associé à GameObject, il s'adapte automatiquement pour adapter le texte du composant TextMesh.

// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;

// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

Démonstration

Le code suivant montre comment récupérer l'élément d'icône d'une annonce native chargée correctement, afficher l'élément d'annonce d'icône en définissant la texture d'un élément Quad et enregistrer la valeur GameObject à utiliser pour afficher l'élément. Le processus d'enregistrement de l'élément d'annonce et d'enregistrement auprès de la classe d'annonce native doit être répété pour chacun des éléments affichés dans l'application.

private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
        icon.transform.position = new Vector3(1, 1, 1);
        icon.transform.localScale = new Vector3(1, 1, 1);
        icon.GetComponent<Renderer>().material.mainTexture = iconTexture;

        // Register GameObject that will display icon asset of native ad.
        if (!this.nativeAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}