Premiers pas

Ce guide vous explique comment utiliser le module complémentaire d'annonces natives pour intégrer des annonces natives AdMob dans une application Unity, ainsi que certains points importants à prendre en compte au cours du processus.

Les annonces natives s'intègrent parfaitement à l'expérience utilisateur dans laquelle elles sont diffusées, tant du point de vue de la forme que de la fonction. Elles correspondent également à la conception visuelle de l'application dans laquelle elles résident. Le format d'annonce native d'AdMob permet aux éditeurs d'afficher des annonces qui s'intègrent parfaitement au contenu. Vous pouvez utiliser cette technologie pour implémenter des affichages hautement personnalisés qui exploitent pleinement le code natif dans les applications Unity.

Les annonces natives sont diffusées à l'aide des mêmes types de GameObjects que vous utilisez déjà pour créer vos applications. Leur mise en forme peut correspondre à l'aspect visuel de l'expérience utilisateur dans laquelle elles sont diffusées. Lors du chargement d'une annonce native, votre application reçoit un objet natif contenant ses éléments, et l'application Unity (et non le SDK) les affiche.

Prérequis

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

Charger des 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 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'annonce AdLoader

Pour recevoir une notification lorsqu'une annonce native se charge correctement 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 a bien été chargée. Il est nécessaire de disposer d'un délégué pour que cet événement puisse accéder à l'annonce chargée.

OnAdFailedToLoad

Appelée lorsque le chargement d'une annonce native échoue.

Charger l'annonce

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

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

Élaborez 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 é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 d'un échec de 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 correspondant au format d'annonce correspondant est appelé. Votre application se charge ensuite d'afficher l'annonce, même si elle ne doit pas nécessairement 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 récupérée à partir 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 des composants d'annonces natives

Une fois les annonces chargées, vous pouvez accéder à leurs assets 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 composants 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 garantie et doit être vérifiée avant leur affichage:

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

Composant Choisir sa pub

Vous devez obligatoirement afficher le composant "Choisir sa pub" dans l'annonce native. De plus, il est important que le composant d'annonce "Choisir sa pub" soit facilement visible. Choisissez donc des images et des couleurs d'arrière-plan appropriées.

Enregistrer des GameObjects pour un composant d'annonce

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

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

L'GameObject enregistré pour un composant d'annonce doit comporter un composant de collisionneur convexe représentatif de la taille et de la forme de l'GameObject. S'il manque des composants Collider aux objets GameObject enregistrés dans les composants d'annonce ou si leur configuration est incorrecte, 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 le composant d'annonce de titre d'une annonce native. Une fois que BoxCollider est associé à GameObject, il s'adapte automatiquement au 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, afficher ce composant en définissant la texture d'un élément Quad, puis enregistrer l'élément GameObject à utiliser pour afficher l'élément. Ce processus de récupération du composant d'annonce et de son enregistrement avec la classe d'annonce native doit être répété pour chacun des composants 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;
}