Emplacements d'annonce

Ce guide explique comment utiliser la fonctionnalité "Emplacements d'annonces" du plug-in Google Mobile Ads Unity afin de créer et d'afficher des annonces pour votre application.

Conditions préalables

Initialiser le SDK Google Mobile Ads

Avant de charger les annonces, initialisez le SDK Mobile Ads en appelant MobileAds.Initialize() avec un rappel Action<InitializationStatus>. Cette opération ne doit être effectuée qu'une seule fois, idéalement lors du lancement de l'application.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Créer des emplacements d'annonces

Pour afficher une bannière avec Google Mobile Ads, la première étape consiste à créer et à configurer un emplacement d'annonce. Vous pouvez sélectionner un emplacement d'annonce au format bannière, interstitiel ou avec récompense sous Assets > Google Mobile Ads > Ad Emplacements (Assets > Google Mobile Ads > Emplacements d'annonces) dans l'éditeur Unity. Trois emplacements d'annonces de démonstration sont ensuite configurés et prêts à être utilisés.

Pour ajouter un nouvel emplacement d'annonce, cliquez sur le bouton Ajouter un emplacement à la fin de la liste. Vous pouvez configurer l'emplacement d'annonce à partir de la vue "Inspector".

Configuration des emplacements d'annonces

Chaque emplacement possède les propriétés suivantes:

Nom de l'emplacement
Nom de l'emplacement. Permet d'identifier des emplacements lors de la configuration d'annonces dans une scène.
Format d'annonce
Bannière, annonce avec récompense ou interstitiel. Type de l'annonce.
ID du bloc d'annonces
Indiquez l'ID de votre bloc d'annonces au format bannière pour Android et iOS. Vous devez indiquer au moins un ID de bloc d'annonces.
Persistant dans toutes les scènes
Lorsque cette option est cochée, la bannière reste à l'écran quels que soient les changements de scène (même comportement que DontDestroyOnLoad).
Chargement automatique activé
Lorsque cette option est cochée, une annonce est chargée automatiquement lors du chargement d'une scène associée à l'emplacement de l'annonce.

La capture d'écran ci-dessous montre un exemple d'emplacement d'annonce intitulé Ma super bannière.

Ajouter un AdGameObject à la scène

Vous pouvez ajouter un AdGameObject pour les formats "Banner", "Interstitiel" ou "Avec récompense" sur votre scène en accédant à GameObject > Google Mobile Ads dans l'éditeur Unity. Sélectionnez le format d'ajout d'un emplacement à la scène active.

Une fois que vous avez ajouté un AdGameObject à la scène, un GameObject représentant l'annonce s'affiche dans la vue "Hierarchy" (Hiérarchie) de l'éditeur Unity.

Vous pouvez modifier le nom de l'emplacement en modifiant le nom du GameObject lui-même. La capture d'écran suivante montre un exemple d'AdGameObject nommé Banner Ad.

Paramètres AdGameObject

Vous pouvez configurer l'AdGameObject dans votre scène à partir de la vue Inspecteur dans les paramètres du composant Ad Game Object (Script).

Emplacement d'annonce

Sélectionnez l'emplacement d'annonce dans la liste déroulante des emplacements configurés. La liste ne comportera que des blocs d'annonces adaptés au format approprié. Par exemple, pour les objets de jeu de type bannière, le menu déroulant n'affiche que les emplacements de bannières configurés.

Configuration de BannerAdGameObject (bannière uniquement)

  • Taille : sélectionnez la taille de la bannière que vous souhaitez utiliser.
    • La bannière adaptative ancrée propose quelques options supplémentaires :
      • Orientation : sélectionnez l'orientation de l'appareil utilisée pour calculer la hauteur de l'annonce.
      • Use full screen width (Utiliser la largeur plein écran) : lorsque cette case est cochée, la bannière occupera toute la largeur de l'écran. Vous pouvez ajuster le pourcentage de largeur de l'écran (50 à 99 %) si vous décochez l'option Utiliser la largeur plein écran.
    • L'option Personnalisée vous permet de fournir la largeur et la hauteur de la bannière.
  • Position de l'annonce : sélectionnez la position où la bannière doit être placée.

Rappels

Vous pouvez implémenter des fonctions qui correspondent à des rappels d'annonces. Par exemple, si vous souhaitez gérer l'échec du chargement d'une bannière:

  1. Créez une fonction compatible avec le rappel d'annonce.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Joignez le script contenant la fonction ci-dessus à n'importe quel GameObject de la scène.

  3. Cliquez sur le bouton +, puis glissez-déposez le GameObject auquel vous avez joint le script.

  4. Sélectionnez la fonction que vous souhaitez associer au rappel d'annonce. Pour les rappels d'annonces paramétrés, sélectionnez la fonction pour accepter la variable dynamique afin de pouvoir obtenir la valeur du paramètre à partir du SDK.

Utiliser l'AdGameObject du script

Obtenir l'instance AdGameObject du script

Tous les objets AdGameObject disposent de la méthode pratique LoadAd(). Cela permet de charger une annonce avec un AdRequest simple et non ciblé. Pour appliquer le ciblage, vous devez utiliser LoadAd(AdRequest adRequest) avec votre propre demande d'annonce configurée.

Pour obtenir l'instance d'un AdGameObject, utilisez la méthode suivante pour chaque format:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

L'objet BannerAdGameObject renvoyé comporte également les méthodes pratiques Hide() et Show().

Interstitiel

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

L'objet InterstitialAdGameObject renvoyé possède une méthode pratique ShowIfLoaded().

Accordé

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

L'objet RewardedAdGameObject renvoyé possède une méthode pratique ShowIfLoaded().

Par exemple, vous pouvez obtenir une instance de BannerAdGameObject et la charger comme suit:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

S'il existe une BannerAdGameObject nommée BannerAd, vous pouvez en obtenir une instance comme celle-ci:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

Accéder à l'objet d'annonce sous-jacent dans AdGameObject

Ces extraits montrent comment accéder à l'objet d'annonce sous-jacent associé à l'objet AdGameObject.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

Interstitiel

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

Accordé

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

Exemples

Afficher une annonce interstitielle

Voici un exemple de configuration d'un jeu pour charger et diffuser une annonce interstitielle à l'aide d'un objet AdGameObject.

Ajoutez un élément InterstitialAdGameObject à la scène et activez la fonctionnalité Auto LoadEnabled (Chargement automatique activé), afin que l'annonce se charge automatiquement lors du chargement de la scène.

Assurez-vous ensuite d'avoir initialisé le SDK en procédant comme suit. Notez que la fonctionnalité de chargement automatique dans AdGameObject ne fonctionne pas si vous oubliez d'initialiser le SDK.

Affichez ensuite une annonce interstitielle entre une transition d'écran en appelant la fonction InterstitialAdGameObject.ShowIfLoaded(). Le code suivant montre un exemple d'affichage d'une annonce interstitielle entre une transition de scène.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

Étant donné que vous avez activé la fonctionnalité de chargement automatique au niveau de l'emplacement de l'annonce, vous n'avez pas besoin de demander explicitement une annonce. Lorsque la scène change, une annonce interstitielle apparaît si une annonce est prête.

Si vous souhaitez demander une annonce manuellement, désactivez la fonctionnalité Chargement automatique dans l'inspecteur d'emplacements d'annonces, puis appelez la fonction InterstitialAdGameObject.LoadAd(). L'extrait de code suivant montre comment demander une annonce manuellement.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

Gérer l'état du bouton "Regarder une annonce avec récompense"

Voici un exemple d'activation d'un bouton "Regarder une annonce avec récompense" à l'aide des emplacements d'annonces.

Ajoutez à la scène un GameObject Button (nommé Button dans cet exemple), qui permettra d'afficher une annonce avec récompense. Ce bouton n'est disponible que lorsqu'une annonce avec récompense est disponible.

Dans la méthode Start(), définissez l'état actif du bouton sur false. Le bouton disparaît alors de la scène.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

Ajoutez un RewardedAdGameObject à la scène et sélectionnez l'emplacement de l'annonce avec récompense de démonstration AdMob dans le menu déroulant.

Dans la section "Rappels" de l'inspecteur RewardedAdGameObject, cliquez sur le bouton + de On Ad Loaded() (Lors du chargement de l'annonce) pour activer l'appel de la fonction lorsqu'une annonce avec récompense est chargée.

Glissez-déposez le GameObject du bouton que vous avez ajouté à l'étape précédente dans le champ Aucun (objet). Sélectionnez une fonction à appeler dans le menu déroulant. Cliquez sur No Function > GameObject > SetActive(bool) (Aucune fonction > GameObject > SetActive(bool)), puis cochez la case pour qu'elle envoie true comme paramètre (appele SetActive(true)).

Dans cette section "Rappels", vous pouvez également associer un événement qui sera appelé lorsque l'événement RewardedAd.OnUserEarnedReward est déclenché. Pour en savoir plus, consultez cette section.

Ensuite, faites en sorte que le bouton affiche une annonce avec récompense lorsqu'il clique dessus. Dans la section Rappels lors d'un clic() de l'inspecteur de boutons, cliquez sur le bouton +, puis faites glisser l'objet GameObject d'emplacement d'annonce avec récompense (nommé Annonce avec récompense dans cet exemple) dans le champ Aucun (objet).

Ensuite, associez la fonction RewardedAdGameObject.ShowIfLoaded() au rappel On Click() du bouton.

Enfin, n'oubliez pas d'initialiser le SDK. L'extrait de code suivant est le code complet de la scène utilisée dans cet exemple:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

Une fois le projet exécuté, le bouton s'affiche dans la scène lorsqu'une annonce avec récompense est chargée et prête à être diffusée.

Configurer un rappel de récompense pour un RécompenseAdGameObject

Voici un exemple de configuration d'un rappel avec récompense pour un emplacement d'annonce avec récompense, afin que vous puissiez offrir une récompense à un utilisateur lorsqu'une fonction de rappel est appelée.

Créez un script et définissez une fonction qui accepte Reward comme paramètre, comme suit.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

Associez le script RewardedTestScript à n'importe quel GameObject (à l'exception du GameObject de l'emplacement d'annonce) de la scène. Dans cet exemple, il est associé au GameObject de l'appareil photo principal.

Ajoutez un RewardedAdGameObject à la scène. Ensuite, dans la section "Rappels" de l'inspecteur RewardedAdGameObject, cliquez sur le bouton + de En cas de récompense offerte par l'utilisateur (récompense) pour activer l'appel de la fonction lorsqu'une récompense est accordée à un utilisateur.

Glissez-déposez le GameObject principal de l'appareil photo que vous avez ajouté à l'étape précédente dans le champ Aucun (objet). Sélectionnez une fonction à appeler dans la liste déroulante. Cliquez sur Aucune fonction > RewardedTestScript > OnUserReceivededReward.

Une fois que vous avez exécuté le projet et regardé une annonce avec récompense, RewardedTestScript.OnUserEarnedReward() est appelé lorsque vous recevez une récompense pour avoir interagi avec l'annonce.