Anzeigen mit Prämie

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Anzeigen mit Prämie sind Anzeigen, mit denen Nutzer interagieren können, um In-App-Prämien zu erhalten. In diesem Leitfaden wird erläutert, wie Sie Anzeigen mit Prämie von AdMob in eine Unity-App einbinden. Lesen Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.

Voraussetzungen

  • Unity-Plug-in 3.16.0 oder höher.
  • Arbeiten Sie den Startleitfaden durch.

Anzeigenobjekt mit Prämie erstellen

Anzeigen mit Prämie werden von RewardedAd-Objekten angefordert und ausgeliefert. Der erste Schritt zum Ausliefern einer Anzeige mit Prämie besteht darin, ein RewardedAd-Objekt zu instanziieren. Dazu wird der Konstruktor mit der Anzeigenblock-ID aufgerufen, die zum Laden der Anzeige verwendet werden soll. Dies wird im folgenden Code-Snippet veranschaulicht:

Die neue Betaversion von Anzeigen-Placements erleichtert die Integration von Anzeigen mit dem Unity-Editor.

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

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen statt Live-Produktionsanzeigen. Sollten Sie dies nicht tun, kann Ihr Konto gesperrt werden.

Testanzeigen lassen sich am einfachsten mit den entsprechenden Testanzeigen-IDs für Android- und iOS-Anzeigen mit Prämie laden:

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Sie wurden speziell so konfiguriert, dass für jede Anfrage Testanzeigen zurückgegeben werden. Sie können sie beim Codieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Ersetze sie einfach durch deine Anzeigenblock-ID, bevor du deine App veröffentlichst.

Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDKs finden Sie unter Testanzeigen.

Anzeige laden

Rufen Sie zum Laden einer Anzeige mit Prämie die Methode loadAd() des RewardedAd-Objekts auf. Für diese Methode ist eine Instanz von AdRequest als Argument erforderlich.

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

[Optional] Callback für die serverseitige Überprüfung (SSV) validieren

Apps, die zusätzliche Daten in serverseitigen Callbacks benötigen, sollten die Funktion für benutzerdefinierte Daten von Anzeigen mit Prämie verwenden. Jeder Stringwert, der für ein Anzeigenobjekt mit Prämie festgelegt ist, wird an den Abfrageparameter custom_data des SSV-Callbacks übergeben. Wenn kein benutzerdefinierter Datenwert festgelegt ist, ist der custom_data-Abfrageparameterwert im SSV-Callback nicht vorhanden.

Das folgende Codebeispiel zeigt, wie Sie die SSV-Optionen festlegen, nachdem die Anzeige mit Prämie geladen wurde.

void HandleRewardedAdLoaded(RewardedAd ad, AdFailedToLoadEventArgs error)
{
    // Create and pass the SSV options to the rewarded ad.
    var options = new ServerSideVerificationOptions
                          .Builder()
                          .SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
                          .Build()
    ad.SetServerSideVerificationOptions(options);
}

Wenn Sie den String für eine benutzerdefinierte Prämie festlegen möchten, müssen Sie dies tun, bevor die Anzeige ausgeliefert wird.

Anzeigenereignisse

Um das Verhalten Ihrer Anzeige weiter anzupassen, können Sie eine Reihe von Ereignissen im Lebenszyklus der Anzeige nutzen: Laden, Öffnen, Schließen usw. Überwachen Sie diese Ereignisse, indem Sie einen Bevollmächtigten für den entsprechenden Event-Handler registrieren. Das wichtigste Ereignis ist OnUserEarnedReward. Es wird aufgerufen, wenn der Nutzer für das Ansehen eines Videos belohnt wird. Sie können auch andere Anzeigenereignisse implementieren, wie unten gezeigt.

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

Das OnUserEarnedReward-Ereignis bietet Argumente für besondere Ereignisse. Sie übergibt eine Instanz von Reward mit einer Type und einer Amount, die die Prämie beschreiben, die an den Nutzer vergeben wurde:

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

Verfügbare Anzeigenereignisse

OnAdLoaded
Wird aufgerufen, wenn eine Anzeige vollständig geladen wurde.
OnAdFailedToLoad
Wird aufgerufen, wenn eine Anzeige nicht geladen wird. Das Attribut Message der angegebenen AdErrorEventArgs beschreibt den aufgetretenen Fehler.
OnAdOpening
Wird aufgerufen, wenn die Anzeige auf dem Bildschirm des Geräts eingeblendet wird. Hier können Sie bei Bedarf die Audioausgabe oder Spielschleife der App pausieren.
OnAdFailedToShow
Wird aufgerufen, wenn eine Anzeige nicht ausgeliefert wird. Das Attribut Message der angegebenen AdErrorEventArgs beschreibt den aufgetretenen Fehler.
OnUserEarnedReward
Wird aufgerufen, wenn ein Nutzer für das Ansehen eines Videos eine Prämie erhalten sollte. Der Parameter Reward beschreibt die Prämie, die dem Nutzer präsentiert werden soll.
OnAdClosed
Wird aufgerufen, wenn die Videoanzeige mit Prämie geschlossen wird, weil der Nutzer auf das Symbol zum Schließen oder die Schaltfläche „Zurück“ tippt. Wenn Ihre App die Audioausgabe oder Spielschleife pausiert hat, ist dies ein guter Ausgangspunkt, um sie fortzusetzen.

Anzeige einblenden

Bevor Nutzer Anzeigen mit Prämie sehen können, müssen sie explizit zustimmen, dass sie sich im Gegenzug Anzeigen mit Prämie ansehen können. Anzeigen mit Prämie müssen immer aktiviert werden.

Wenn Sie eine Anzeige mit Prämie ausliefern möchten, prüfen Sie mit der Methode IsLoaded(), ob der Ladevorgang abgeschlossen ist. Rufen Sie dann show() auf. Hier ein Beispiel:

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

Mit OnAdClosed die nächste Anzeige mit Prämie vorab laden

RewardedAd ist ein Objekt zur einmaligen Verwendung. Das bedeutet, dass das Objekt nicht mehr zum Laden einer anderen Anzeige verwendet werden kann. Wenn Sie eine weitere Anzeige mit Prämie anfordern möchten, müssen Sie ein neues RewardedAd-Objekt erstellen.

Als Best Practice wird empfohlen, eine weitere Anzeige mit Prämie im Anzeigenereignis OnAdClosed zu laden, damit die nächste Anzeige mit Prämie geladen wird, sobald die vorherige Anzeige geschlossen wird:

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

Mehrere Anzeigen mit Prämie werden geladen

Wenn Sie mehrere Anzeigen mit Prämie laden möchten, folgen Sie den Schritten im Abschnitt Anzeigenobjekte mit Prämie erstellen und Anzeigen laden für jede Anzeige, die geladen werden soll. Das Code-Snippet unten zeigt, wie zwei Anzeigen mit Prämie für zwei verschiedene Anzeigen-Placements geladen werden.

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

Beispiele