Emplacements d'annonce

Ce guide vous explique comment utiliser la fonctionnalité d'emplacements d'annonces du plug-in Google Mobile Ads Unity pour créer et diffuser des annonces pour votre application.

Prérequis

Initialiser le SDK Google Mobile Ads

Avant de charger des annonces, initialisez le SDK Google 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 au lancement de l'application.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize Google 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, vous devez d'abord créer et configurer un emplacement publicitaire. Dans l'éditeur Unity, vous pouvez sélectionner un emplacement d'annonce au format bannière, interstitiel ou avec récompense dans Assets > Google Mobile Ads > Ad Placements (Ressources > Google Mobile Ads > Emplacements d'annonces). Trois emplacements d'annonces de démonstration sont ensuite configurés et prêts à l'emploi.

Pour ajouter un emplacement publicitaire, cliquez sur le bouton Add New Placement (Ajouter un emplacement) à la fin de la liste. Vous pouvez configurer l'emplacement de l'annonce dans la vue "Inspector" (Inspecteur).

Configuration de l'emplacement des annonces

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

Nom de l'emplacement
Nom de l'emplacement. Permet d'identifier les emplacements lors de la configuration des annonces dans une scène.
Format d'annonce
Bannière, avec récompense, interstitiel Type d'annonce.
ID du bloc d'annonces
Indiquez l'ID de votre bloc d'annonces au format bannière pour Android et iOS. Vous devez fournir au moins un ID de bloc d'annonces.
Persistant dans toutes les scènes
Si cette option est cochée, la bannière restera affichée à l'écran, quelle que soit la scène (même comportement que DontDestroyOnLoad).
Équilibrage automatique activé
Si cette case est cochée, une annonce sera automatiquement chargée lorsqu'une scène associée à l'emplacement publicitaire sera chargée.

La capture d'écran suivante montre un exemple d'emplacement d'annonce nommé My Awesome Banner (Ma super bannière).

Ajouter un AdGameObject à la scène

Vous pouvez ajouter un AdGameObject pour les formats bannière, interstitiel ou avec récompense à votre scène à l'aide de GameObject > Google Mobile Ads dans l'éditeur Unity. Sélectionnez le format pour ajouter 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 Hiérarchie de l'éditeur Unity.

Pour modifier le nom de l'emplacement, modifiez 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 "Inspector" (Inspecteur) dans les paramètres du composant Ad Game Object (Script) (Objet de jeu d'annonce (script)).

Emplacement d'annonce

Sélectionnez l'emplacement de l'annonce dans la liste déroulante des emplacements configurés. La liste ne contient que les blocs d'annonces du bon format. Par exemple, pour les objets de jeu de bannière publicitaire, le menu déroulant n'affichera que les emplacements de bannière publicitaire configurés.

Configuration BannerAdGameObject (bannière uniquement)

  • Taille : sélectionnez la taille de la bannière que vous souhaitez utiliser.
    • La bannière adaptative ancrée offre quelques options supplémentaires :
      • Orientation : sélectionnez l'orientation de l'appareil utilisée pour calculer la hauteur de l'annonce.
      • Utiliser toute la largeur de l'écran : si cette option est cochée, la bannière occupera toute la largeur de l'écran. Vous pouvez ajuster le pourcentage de largeur de l'écran (de 50 à 99 %) si vous décochez l'option Utiliser toute la largeur de l'écran.
    • Personnalisée : vous pouvez indiquer 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 correspondant aux 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 faites glisser et déposez le GameObject auquel vous avez associé 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 permettant d'accepter la variable dynamique afin de pouvoir obtenir la valeur du paramètre à partir du SDK.

Utiliser AdGameObject à partir d'un script

Obtenir l'instance AdGameObject à partir du script

Tous les objets AdGameObject disposent de la méthode pratique LoadAd(). Cela chargera 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 des méthodes pratiques Hide() et Show().

Interstitiel

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

L'objet InterstitialAdGameObject renvoyé comporte une méthode pratique ShowIfLoaded().

Avec récompense

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

L'objet RewardedAdGameObject renvoyé comporte 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();
        ...
    }
    ...
}

Si un BannerAdGameObject nommé BannerAd existe, vous pouvez en obtenir une instance comme suit :

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é à 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;

Avec récompense

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 afficher une annonce interstitielle à l'aide d'un AdGameObject.

Ajoutez un InterstitialAdGameObject à la scène et activez la fonctionnalité Auto Load Enabled (Chargement automatique activé) pour que l'annonce soit chargée automatiquement lorsque la scène se charge.

Ensuite, assurez-vous d'avoir initialisé le SDK comme suit. Notez que la fonctionnalité Auto Load (Chargement automatique) dans AdGameObject ne fonctionnera pas si vous oubliez d'initialiser le SDK.

Affichez ensuite une annonce interstitielle entre deux écrans en appelant la fonction InterstitialAdGameObject.ShowIfLoaded(). Le code suivant montre un exemple d'affichage d'une annonce interstitielle entre deux scènes.

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é Chargement automatique dans l'emplacement d'annonce, vous n'avez pas besoin de demander explicitement une annonce. Lorsqu'une scène change, une annonce interstitielle s'affiche si elle est prête.

Si vous souhaitez demander manuellement une annonce, désactivez la fonctionnalité Auto Load dans l'inspecteur d'emplacements publicitaires et appelez plutôt la fonction InterstitialAdGameObject.LoadAd(). L'extrait de code suivant montre comment demander manuellement une annonce.

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 montrant comment activer un bouton "Regarder une annonce avec récompense" à l'aide d'emplacements publicitaires.

Ajoutez un GameObject Button (nommé Button dans cet exemple) à la scène, qui sera utilisé pour afficher une annonce avec récompense. Nous ne rendrons ce bouton disponible que lorsqu'une annonce avec récompense sera disponible.

Dans la méthode Start(), remplacez l'état actif du bouton par 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, puis sélectionnez l'emplacement d'annonce AdMob Demo Rewarded Ad (Annonce avec récompense de démonstration AdMob) dans le menu déroulant.

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

Faites glisser et déposez le GameObject "Button" (Bouton) que vous avez ajouté à l'étape précédente dans le champ None (Object) (Aucun (Objet)). Sélectionnez une fonction à appeler dans le menu déroulant. Cliquez sur No Function > GameObject > SetActive(bool), puis cochez la case pour envoyer true en tant que paramètre (appelle SetActive(true)).

Dans cette section "Callbacks" (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'un utilisateur clique dessus. Dans la section On Click() Callbacks de l'inspecteur de boutons, cliquez sur le bouton +, puis faites glisser et déposez le GameObject d'emplacement d'annonce avec récompense (nommé Rewarded Ad dans cet exemple) dans le champ None (Object).

Associez ensuite la fonction RewardedAdGameObject.ShowIfLoaded() au rappel On Click() du bouton.

Enfin, n'oubliez pas d'initialiser le SDK. L'extrait de code suivant correspond au 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 sur 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 RewardedAdGameObject

Voici un exemple de configuration d'un rappel de récompense pour un emplacement d'annonce avec récompense. Vous pouvez ainsi accorder 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 de la scène (sauf le GameObject Ad Placement). Dans cet exemple, il est associé au GameObject "Main Camera" (Caméra principale).

Ajoutez un RewardedAdGameObject à la scène. Ensuite, dans la section "Callbacks" (Rappels) de l'inspecteur RewardedAdGameObject, cliquez sur le bouton + de On User Earned Reward (Reward) (Lorsqu'un utilisateur a gagné une récompense) pour activer la fonction à appeler lorsqu'une récompense est accordée à un utilisateur.

Faites glisser et déposez le GameObject "Main Camera" que vous avez ajouté à l'étape précédente dans le champ None (Object). Sélectionnez une fonction à appeler dans le menu déroulant. Cliquez sur No Function > RewardedTestScript > OnUserEarnedReward.

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