Annonces avec récompense

Les annonces avec récompense sont des annonces avec lesquelles les utilisateurs ont la possibilité d'interagir pour gagner des récompenses dans l'application. Ce guide vous explique comment intégrer des annonces avec récompense dans AdMob dans une application Unity. Lisez les témoignages de certains clients : étude de cas 1, étude de cas 2.

Prerequisites

  • Plug-in Unity 3.16.0 ou version ultérieure
  • Suivez la procédure Commencer. Le plug-in Google Mobile Ads de votre application Unity doit déjà être importé.

Créer un objet d'annonce avec récompense

Les annonces avec récompense sont demandées et diffusées par RewardedAd objets. La première étape pour afficher une annonce avec récompense consiste à instancier un objet RewardedAd en appelant le constructeur avec l'ID de bloc d'annonces à utiliser pour charger l'annonce. Cela est illustré dans l'extrait de code suivant:

Pour intégrer plus facilement des annonces à l'aide de l'éditeur Unity, testez la nouvelle version bêta des emplacements pour annonces.

using UnityEngine.Events;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine.UI;
using System;
using System.Collections.Generic;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);
    }
}

Toujours tester avec des annonces tests

Lorsque vous créez et testez vos applications, assurez-vous d'utiliser des annonces tests plutôt que des annonces de production. À défaut, votre compte risque d'être suspendu.

Le moyen le plus simple de charger des annonces tests est d'utiliser nos ID de bloc d'annonces tests dédiés pour les annonces avec récompense Android et iOS:

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Ils ont été spécialement configurés pour renvoyer des annonces de test pour chaque demande, et vous pouvez les utiliser dans vos propres applications lors du codage, des tests et du débogage. Veillez simplement à les remplacer par votre propre ID de bloc d'annonces avant de publier votre application.

Pour en savoir plus sur le fonctionnement des annonces tests du SDK Mobile Ads, consultez la page Tester les annonces.

Charger une annonce

Pour charger une annonce avec récompense, appelez la méthode loadAd() de l'objet RewardedAd. Cette méthode nécessite une instance de AdRequest comme argument.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }
}

Événements publicitaires

Pour personnaliser davantage le comportement de votre annonce, vous pouvez intégrer un certain nombre d'événements dans le cycle de vie de celle-ci: chargement, ouverture, fermeture, etc. Pour écouter ces événements, enregistrez un délégué pour le gestionnaire d'événements approprié. L'événement le plus important est OnUserEarnedReward, qui est appelé lorsque l'utilisateur est récompensé pour avoir regardé une vidéo. Vous pouvez également intégrer d'autres événements d'annonce, comme illustré ci-dessous.

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        string adUnitId;
        #if UNITY_ANDROID
            adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        // Called when an ad request has successfully loaded.
        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        // Called when an ad request failed to load.
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        // Called when an ad is shown.
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
        // Called when an ad request failed to show.
        this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
        // Called when the user should be rewarded for interacting with the ad.
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        // Called when the ad is closed.
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

    public void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdLoaded event received");
    }

    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToLoad event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdOpening(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdOpening event received");
    }

    public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToShow event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdClosed event received");
    }

    public void HandleUserEarnedReward(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardedAdRewarded event received for "
                        + amount.ToString() + " " + type);
    }
}

L'événement OnUserEarnedReward fournit des arguments d'événements spéciaux. Il transmet une instance de Reward avec un élément Type et Amount décrivant la récompense accordée à l'utilisateur:

public void HandleUserEarnedReward(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
     MonoBehaviour.print(
          "HandleRewardedAdRewarded event received for "
              + amount.ToString() + " " + type);
}

Événements d'annonce disponibles

OnAdLoaded
Appelé lorsqu'une annonce est chargée.
OnAdFailedToLoad
Elle est appelée lorsqu'une annonce ne se charge pas. La propriété Message du AdErrorEventArgs fourni décrit le type de défaillance qui s'est produite.
OnAdOpening
Invoqué lorsque l'annonce s'affiche et couvre l'écran de l'appareil. C'est l'endroit idéal pour mettre en pause la sortie audio ou la boucle de jeu de votre application, si nécessaire.
OnAdFailedToShow
Elle est appelée lorsqu'une annonce ne s'affiche pas. La propriété Message du AdErrorEventArgs fourni décrit le type de défaillance qui s'est produite.
OnUserEarnedReward
Invoqué lorsqu'un utilisateur doit être récompensé pour avoir regardé une vidéo. Le paramètre Reward décrit la récompense à présenter à l'utilisateur.
OnAdClosed
Invoqué lorsque l'annonce vidéo avec récompense est fermée, car l'utilisateur appuie sur l'icône de fermeture ou sur le bouton"Retour". Si votre application met en pause la sortie audio ou la boucle de jeu, c'est l'endroit idéal pour la réactiver.

Diffuser l'annonce

Avant de diffuser une annonce avec récompense, les utilisateurs doivent leur demander explicitement de consulter le contenu de cette annonce en échange d'une récompense. Vous devez toujours activer l'expérience pour les annonces avec récompense.

Pour afficher une annonce avec récompense, vérifiez la méthode IsLoaded() afin de vérifier qu'elle est terminée, puis appelez show(). Voici un exemple de la marche à suivre:

private void UserChoseToWatchAd()
{
  if (this.rewardedAd.IsLoaded()) {
    this.rewardedAd.Show();
  }
}

Utiliser OnAdClosed pour précharger la prochaine annonce avec récompense

RewardedAd est un objet à usage unique. Autrement dit, une fois qu'une annonce avec récompense est diffusée, l'objet ne peut pas en charger une autre. Pour demander une autre annonce avec récompense, vous devez créer un objet RewardedAd.

Il est recommandé de charger une autre annonce avec récompense dans l'événement d'annonce OnAdClosed afin que cette dernière commence à se charger dès que la précédente est ignorée:

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void CreateAndLoadRewardedAd()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

...

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        this.CreateAndLoadRewardedAd();
    }
}

Chargement de plusieurs annonces avec récompense

Pour charger plusieurs annonces avec récompense, suivez les étapes décrites dans les sections Créer un objet d'annonce avec récompense et Charger une annonce pour chaque annonce que vous souhaitez charger. L'extrait de code ci-dessous montre comment charger deux annonces avec récompense pour deux emplacements d'annonces distincts.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;
    ...
    public void Start()
    {
        ...

        this.gameOverRewardedAd = CreateAndLoadRewardedAd(adUnitId);
        this.extraCoinsRewardedAd = CreateAndLoadRewardedAd(adUnitId);
    }

    public RewardedAd CreateAndLoadRewardedAd(string adUnitId)
    {
        RewardedAd rewardedAd = new RewardedAd(adUnitId);

        rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        rewardedAd.LoadAd(request);
        return rewardedAd;
    }
}

Exemples