Commencer

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce guide vous explique comment utiliser le module complémentaire d'annonces natives pour intégrer des annonces natives AdMob dans une application Unity. Il présente également certains points importants à prendre en compte au cours de ce processus.

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'apparence de l'application dans laquelle elles sont publiées. Le format d'annonces natives AdMob permet aux éditeurs de diffuser des annonces intégrées au contenu. Vous pouvez utiliser cette technologie pour implémenter des rendus hautement personnalisés qui exploitent pleinement le code natif des applications Unity.

Les annonces natives sont diffusées avec les mêmes types de GameObjects que ceux avec lesquels vous créez déjà vos applications. Elles peuvent être mises en forme pour correspondre à l'apparence de l'expérience utilisateur. Lors du chargement d'une annonce native, votre application reçoit un objet natif contenant ses éléments que l'application Unity (et non le SDK) affiche.

Prérequis

  • Plug-in Google Mobile Ads Unity version 7.0.0 ou ultérieure
  • Suivez le guide de démarrage.
  • Téléchargez et installez le module complémentaire d'annonces natives.

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 AdLoader pour qu'il gère les annonces natives.

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

S'inscrire aux événements d'annonce 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é lorsqu'une annonce native a bien été chargée. Vous devez disposer d'un délégué pour que cet événement puisse accéder à l'annonce chargée.

OnAdFailedToLoad

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

Charger l'annonce

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

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

Regrouper les demandes d'annonces

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 échoué, et envoyer 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 échecs de chargement des annonces

L'événement OnAdFailedToLoad est de type EventHandle<AdFailedToLoadEventArgs>. Vous trouverez ci-dessous la raison de l'échec du chargement de l'annonce pour 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é. Votre application est ensuite responsable de l'affichage de l'annonce, bien que cela ne soit pas nécessaire de le faire 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 illustré ci-dessous:

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

Récupérer des composants d'annonces natives

Une fois les annonces chargées, vous pouvez accéder à leurs éléments comme indiqué ci-dessous. Les éléments graphiques sont renvoyés en tant qu'objets Texture2D et les éléments textuels 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 sont accessibles que sur 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 doit être vérifiée avant d'être affichée:

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

Élément AdChoices

Vous devez obligatoirement afficher l'asset AdChoices 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 un GameObjects pour un composant d'annonce

Vous devez enregistrer le GameObject pour que le composant d'annonce soit affiché dans votre application Unity. Si l'enregistrement aboutit, la méthode utilisée pour enregistrer le GameObject renvoie un bool. Pour un List<GameObject>, la méthode renvoie un int indiquant le nombre de GameObject enregistré.

Si l'enregistrement d'un composant 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.
}

Le GameObject enregistré pour un asset publicitaire doit comporter un composant Collider convexe représentatif de la taille et de la forme du GameObject. S'il manque des composants Collider dans les objets GameObject enregistrés pour des assets d'annonce ou que leur configuration est incorrecte, les annonces natives ne fonctionnent pas correctement.

Dans l'extrait de code ci-dessous, un BoxCollider est ajouté à GameObject qui utilise un TextMesh pour afficher l'asset d'annonce de titre d'une annonce native. Une fois que BoxCollider est associé à GameObject, il s'adapte automatiquement pour tenir compte du 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émo

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 d'icône en définissant la texture d'un Quad et enregistrer le GameObject à utiliser pour afficher l'élément. Ce processus de récupération 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 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;
}