Commencer

Ce guide vous explique comment utiliser le module complémentaire d'annonces natives pour intégrer des annonces natives AdMob dans une application Unity. Vous découvrirez également certains points importants à prendre en compte au cours de la procédure.

Les annonces natives s'intègrent parfaitement dans l'expérience utilisateur dans laquelle elles sont diffusées, tant du point de vue de la forme que de la fonction. Elles s'adaptent également à l'aspect visuel de l'application. Le format d'annonces natives AdMob permet aux éditeurs d'afficher des annonces parfaitement intégrées au contenu. Vous pouvez utiliser cette technologie pour mettre en œuvre des affichages hautement personnalisés qui exploitent pleinement le code natif dans les applications Unity.

Les annonces natives s'affichent avec le même type de GameObjects que celui avec lequel vous créez déjà vos applications. Elles peuvent être mises en forme pour s'adapter à l'aspect visuel de l'expérience utilisateur. Lorsqu'une annonce native se charge, votre application reçoit un objet natif contenant ses éléments, et l'application Unity (plutôt que le SDK) les affiche.

.

Prérequis

Charger les formats d'annonces natives

Les annonces natives sont chargées via la classe AdLoader, qui possède sa propre classe AdLoader.Builder pour la personnaliser lors de la création. La méthode ForNativeAd() configure le composant AdLoader pour gérer les annonces natives.

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

S'inscrire aux événements d'annonces AdLoader

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

OnNativeAdLoaded

Appelée lorsqu'une annonce native est chargée. Un délégué est requis pour que cet événement puisse accéder à l'annonce chargée.

OnAdFailedToLoad

Appelée en cas d'échec du chargement d'une annonce native.

Charger l'annonce

Une fois la AdLoader créée, 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 objet AdLoader configuré pour demander des annonces natives, définit des délégués pour les chargements d'annonces ayant réussi et échoué, et envoie 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>. L'analyse de la raison de l'échec du chargement d'une annonce à partir de cet événement est illustrée ci-dessous.

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

Lorsqu'une annonce native est chargée, l'événement d'annonce correspondant au format d'annonce correspondant est appelé. Votre application est alors responsable de la diffusion de l'annonce, bien que cela ne soit pas nécessaire immédiatement.

Gérer le volume d'annonces

L'événement OnNativeAdLoaded est de type EventHandler<NativeAdEventArgs>. L'annonce, encapsulée dans un objet NativeAd, peut être extraite de NativeAdEventArgs comme indiqué ci-dessous:

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'annonce native

Une fois les annonces chargées, leurs éléments sont accessibles comme indiqué ci-dessous. Les éléments graphiques sont renvoyés en tant qu'objets Texture2D et les éléments texte en tant qu'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 depuis le thread principal, par exemple à partir de la méthode Update() d'un script Unity. Notez également que la présence des éléments suivants n'est pas toujours garantie, et qu'ils doivent être vérifiés avant de les afficher:

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

Élément Choisir sa pub

Il est nécessaire d'afficher l'élément "Choisir sa pub" dans l'annonce native. De plus, il est important que l'élément d'annonce "Choisir sa pub" soit facile à voir. Choisissez donc les couleurs et les images de fond appropriées.

Enregistrer GameObjects pour un élément d'annonce

Pour chaque élément d'annonce à afficher, vous devez enregistrer le GameObject à utiliser pour l'afficher dans l'application Unity. Chaque méthode permettant d'enregistrer un GameObject pour un élément d'annonce renvoie 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 seront pas reconnus.

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

Le GameObject enregistré pour un élément d'annonce doit comporter un composant "Colder" convexe représentatif de la taille et de la forme du GameObject. S'il manque des composants Collider dans des objets GameObject enregistrés pour des éléments d'annonce, ou s'ils ne sont pas configurés correctement, les annonces natives ne fonctionneront pas correctement.

Dans l'extrait de code ci-dessous, un BoxCollider est ajouté à GameObject. Il utilise TextMesh pour afficher l'élément d'annonce titre d'une annonce native. Une fois que BoxCollider est associé à GameObject, il s'adapte automatiquement pour adapter le contenu 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, afficher l'élément d'annonce associé en définissant la texture d'une propriété Quad et enregistrer la valeur GameObject à utiliser pour l'affichage. l'élément. Ce processus de récupération de l'élément d'annonce et de son enregistrement avec la classe d'annonce native doit être répété pour chaque élément affiché par 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;
}