Premiers pas

Ce guide explique comment utiliser le module complémentaire d'annonces natives pour implémenter des annonces natives dans une application Unity, ainsi que certains points importants à prendre en compte.

Les annonces natives s'intègrent parfaitement dans l'expérience utilisateur au sein de laquelle elles sont diffusées, tant du point de vue de la forme que de la fonction. Leur design s'accordent bien avec l'application qui les héberge. Le format d'annonces natives d'Ad Manager permet aux éditeurs de diffuser des annonces bien intégrées au contenu. Grâce à cette technologie, vous pouvez obtenir un affichage hautement personnalisé, qui exploite pleinement le code natif dans les applications Unity.

Les annonces natives sont diffusées à l'aide des mêmes types de GameObjects que ceux que vous utilisez déjà pour créer vos applications. Elles peuvent être mises en forme pour correspondre à l'aspect visuel de l'expérience utilisateur dans laquelle elles sont diffusées. Lorsqu'une annonce native est chargée, votre application reçoit un objet natif contenant ses composants. C'est l'application Unity, et non le SDK, qui les affiche.

Prérequis

  • Plug-in Google Mobile Ads Unity version 7.0.0 ou ultérieure.
  • Avoir suivi le guide de démarrage.
  • Télécharger et installer 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 AdLoader.Builder classe pour la personnaliser lors de la création. La méthode ForNativeAd() configure l'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 est chargée ou ne parvient pas à se charger, ajoutez des délégués à la classe AdLoader pour les événements listés ci-dessous.

OnNativeAdLoaded

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

OnAdFailedToLoad

Appelé lorsqu'une annonce native ne parvient pas à se charger.

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());

Assembler 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 réussis et échoués, 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 échoués

L'événement OnAdFailedToLoad est de type EventHandle<AdFailedToLoadEventArgs>. L'analyse de la raison d'un échec de chargement d'annonce à partir de cet événement est présenté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 pour le format d'annonce correspondant est appelé. Votre application est alors responsable de l'affichage de l'annonce, mais elle n'est pas nécessairement obligée de le faire immédiatement.

Gérer le chargement 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, leurs composants sont accessibles comme indiqué ci-dessous. Les composants graphiques sont renvoyés en tant qu'objets Texture2D, et les composants textuels sont renvoyés 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 doivent être accessibles que sur le thread principal, par exemple à partir de la méthode Update() d'un script Unity. Notez également que les composants suivants ne sont pas toujours garantis et doivent être vérifiés avant d'être affichés :

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

Composant Choisir sa pub

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

Enregistrer des GameObjects pour le composant d'annonce

Vous devez enregistrer le GameObject pour que le composant d'annonce s'affiche dans votre application Unity. Si l'enregistrement réussit, 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és.

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.
}

Le GameObject enregistré pour un composant d'annonce doit comporter un composant Collider convexe représentant la taille et la forme du GameObject. Si les objets GameObject enregistrés pour les composants d'annonce ne comportent pas de composants Collider ou si l'un d'eux est mal configuré, 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 le BoxCollider associé au GameObject, il s'adaptera 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émo

Le code suivant montre comment récupérer le composant d'icône d'une annonce native chargée, afficher le composant d'annonce d'icône en définissant la texture d'un Quad et enregistrer le GameObject à utiliser pour afficher le composant. Ce processus de récupération du composant d'annonce et d'enregistrement auprès de 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;
}