Anzeigen mit Prämie (alt)

Anzeigen mit Prämie sind Anzeigen, mit denen Nutzer interagieren können, um In-App-Prämien zu erhalten. In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie aus AdMob in eine Unity-App einbinden.

Lesen Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.

In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie in eine Unity-App einbinden.

Voraussetzungen

Immer mit Testanzeigen testen

Der folgende Beispielcode enthält eine Anzeigenblock-ID, mit der Sie Testanzeigen anfordern können. Es wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen statt Produktionsanzeigen zurückgegeben werden. Die Verwendung ist daher sicher.

Nachdem Sie jedoch eine App in derAdMob -Weboberfläche registriert und eigene Anzeigenblock-IDs zur Verwendung in Ihrer App erstellt haben, müssen Sie Ihr Gerät während der Entwicklung explizit als Testgerät konfigurieren.

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Mobile Ads SDK initialisieren

Bevor die Anzeigen geladen werden, muss Ihre App das Mobile Ads SDK initialisieren. Rufen Sie dazu MobileAds.Initialize() auf. Dieser Schritt muss nur einmal durchgeführt werden, idealerweise direkt beim Start der App.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

Wenn Sie die Vermittlung verwenden, warten Sie, bis der Callback erfolgt ist, bevor Sie die Anzeigen laden. So wird sichergestellt, dass alle Vermittlungsadapter initialisiert werden.

Implementierung

Die wichtigsten Schritte zur Integration von Anzeigen mit Prämie:

  1. Anzeige mit Prämie laden
  2. [Optional] Callbacks für die serverseitige Überprüfung validieren
  3. Anzeige mit Prämie mit Prämienrückruf einblenden
  4. Ereignisse für Anzeigen mit Prämie beobachten
  5. Anzeige mit Prämie bereinigen
  6. Nächste Anzeige mit Prämie vorab laden

Anzeige mit Prämie laden

Eine Anzeige mit Prämie wird mit der statischen Methode Load() in der Klasse RewardedAd geladen. Das geladene RewardedAd-Objekt wird im Abschluss-Handler als Parameter bereitgestellt. Das folgende Beispiel zeigt, wie ein RewardedAd geladen wird.

// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
  private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
  private string _adUnitId = "unused";
#endif

  private RewardedAd rewardedAd;

  /// <summary>
  /// Loads the rewarded ad.
  /// </summary>
  public void LoadRewardedAd()
  {
      // Clean up the old ad before loading a new one.
      if (rewardedAd != null)
      {
            rewardedAd.Destroy();
            rewardedAd = null;
      }

      Debug.Log("Loading the rewarded ad.");

      // create our request used to load the ad.
      var adRequest = new AdRequest.Builder().Build();

      // send the request to load the ad.
      RewardedAd.Load(_adUnitId, adRequest,
          (RewardedAd ad, LoadAdError error) =>
          {
              // if error is not null, the load request failed.
              if (error != null || ad == null)
              {
                  Debug.LogError("Rewarded ad failed to load an ad " +
                                 "with error : " + error);
                  return;
              }

              Debug.Log("Rewarded ad loaded with response : "
                        + ad.GetResponseInfo());

              rewardedAd = ad;
          });
  }

[Optional] Callbacks für die serverseitige Überprüfung validieren

Apps, für die zusätzliche Daten bei Callbacks zur serverseitigen Überprüfung erforderlich sind, sollten die Funktion für benutzerdefinierte Daten von Anzeigen mit Prämie verwenden. Jeder für ein Anzeigenobjekt mit Prämie festgelegte Stringwert wird an den custom_data-Abfrageparameter des SSV-Callbacks übergeben. Wenn kein benutzerdefinierter Datenwert festgelegt ist, ist der Wert des Abfrageparameters custom_data im SSV-Callback nicht vorhanden.

Im folgenden Codebeispiel wird gezeigt, wie die Optionen für die serverseitige Überprüfung festgelegt werden, nachdem die Anzeige mit Prämie geladen wurde.

// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest, (RewardedAd ad, LoadAdError error) =>
{
    // If the operation failed, an error is returned.
    if (error != null || ad == null)
    {
        Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
        return;
    }

    // If the operation completed successfully, no error is returned.
    Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());

    // 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 benutzerdefinierten Prämienstring festlegen möchten, müssen Sie das tun, bevor die Anzeige ausgeliefert wird.

Anzeige mit Prämie mit Prämienrückruf einblenden

Wenn Sie Ihre Anzeige präsentieren, müssen Sie einen Callback bereitstellen, um die Prämie für den Nutzer zu verarbeiten. Anzeigen können nur einmal pro Ladevorgang ausgeliefert werden. Prüfen Sie mit der Methode CanShowAd(), ob die Anzeige ausgeliefert werden kann.

Der folgende Code stellt die beste Methode zum Ausliefern einer Anzeige mit Prämie dar.

public void ShowRewardedAd()
{
    const string rewardMsg =
        "Rewarded ad rewarded the user. Type: {0}, amount: {1}.";

    if (rewardedAd != null && rewardedAd.CanShowAd())
    {
        rewardedAd.Show((Reward reward) =>
        {
            // TODO: Reward the user.
            Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
        });
    }
}

Ereignisse für Anzeigen mit Prämie beobachten

Zur weiteren Anpassung des Anzeigenverhaltens können Sie eine Reihe von Ereignissen im Lebenszyklus der Anzeige einbinden, z. B. Öffnen oder Schließen. Registrieren Sie einen Delegaten, wie unten gezeigt, um auf diese Ereignisse zu warten.

private void RegisterEventHandlers(RewardedAd ad)
{
    // Raised when the ad is estimated to have earned money.
    ad.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    ad.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Rewarded ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    ad.OnAdClicked += () =>
    {
        Debug.Log("Rewarded ad was clicked.");
    };
    // Raised when an ad opened full screen content.
    ad.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Rewarded ad full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Rewarded ad full screen content closed.");
    };
    // Raised when the ad failed to open full screen content.
    ad.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Rewarded ad failed to open full screen content " +
                       "with error : " + error);
    };
}

Anzeige mit Prämie bereinigen

Wenn Sie mit einem RewardedAd fertig sind, müssen Sie die Methode Destroy() aufrufen, bevor Sie den Verweis darauf löschen:

rewardedAd.Destroy();

Dadurch wird das Plug-in darüber informiert, dass das Objekt nicht mehr verwendet wird und der belegte Arbeitsspeicher freigegeben werden kann. Wenn diese Methode nicht aufgerufen wird, treten Speicherlecks auf.

Nächste Anzeige mit Prämie vorab laden

RewardedAd ist ein Objekt zur einmaligen Verwendung. Sobald eine Anzeige mit Prämie zu sehen ist, kann das Objekt nicht mehr verwendet werden. Wenn Sie eine weitere Anzeige mit Prämie anfordern möchten, müssen Sie ein neues RewardedAd-Objekt erstellen.

Damit eine Anzeige mit Prämie auf die nächste mögliche Impression vorbereitet werden kann, müssen Sie sie vorab laden, sobald das Anzeigenereignis OnAdFullScreenContentClosed oder OnAdFullScreenContentFailed ausgelöst wird.

private void RegisterReloadHandler(RewardedAd ad)
{
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Rewarded Ad full screen content closed.");

        // Reload the ad so that we can show another as soon as possible.
        LoadRewardedAd();
    };
    // Raised when the ad failed to open full screen content.
    ad.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Rewarded ad failed to open full screen content " +
                       "with error : " + error);

        // Reload the ad so that we can show another as soon as possible.
        LoadRewardedAd();
    };
}

Zusätzliche Ressourcen

Samples