Interstitial-Anzeigen mit Prämie (Beta)

Interstitial-Anzeigen mit Prämie sind ein auf Incentives basierendes Anzeigenformat, das automatisch an natürlichen Übergangspunkten in einer App ausgeliefert wird. Sie können damit Nutzer, die sich die Werbung ansehen, mit Prämien belohnen. Anders als bei Anzeigen mit Prämie müssen Nutzer nicht zustimmen, sich Interstitials mit Prämie anzusehen.

Vorbereitung

Richten Sie ein, bevor Sie fortfahren Google Mobile Ads Unity Plugin.

Immer mit Testanzeigen testen

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

Nachdem Sie eine App in der AdMob-Weboberfläche registriert und eigene Anzeigenblock IDs für die Verwendung in Ihrer App erstellt haben, müssen Sie Ihr Gerät während der Entwicklung explizit als Test Gerät konfigurieren.

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

Google Mobile Ads Unity Plugin initialisieren

Bevor Sie Anzeigen laden, muss Ihre App Google Mobile Ads Unity Plugin initialisieren. Rufen Sie dazu MobileAds.Initialize() auf. Dies muss nur einmal erfolgen, idealerweise beim Start der App.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize Google Mobile Ads Unity Plugin.
        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 Anzeigen laden. So wird sichergestellt, dass alle Vermittlungsadapter initialisiert werden.

Implementierung

Die wichtigsten Schritte zum Einbinden von Interstitial-Anzeigen mit Prämie sind:

  1. Interstitial-Anzeige mit Prämie laden
  2. [Optional] Serverseitige Überprüfungs-Callbacks (SSV) validieren
  3. Interstitial-Anzeige mit Prämie mit Prämien-Callback präsentieren
  4. Ereignisse von Interstitial-Anzeigen mit Prämie beobachten
  5. Interstitial-Anzeige mit Prämie bereinigen
  6. Nächste Interstitial-Anzeige mit Prämie vorab laden

Interstitial-Anzeige mit Prämie laden

Das Laden einer Interstitial-Anzeige mit Prämie erfolgt über die statische Methode Load() in der Klasse RewardedInterstitialAd. Für die Methode zum Laden sind eine Anzeigenblock-ID, ein AdRequest-Objekt und ein Completion-Handler erforderlich, der aufgerufen wird, wenn das Laden der Anzeige erfolgreich ist oder fehlschlägt. Das geladene RewardedInterstitialAd-Objekt wird als Parameter im Completion-Handler bereitgestellt. Im folgenden Beispiel wird gezeigt, wie Sie ein RewardedInterstitialAd-Objekt laden.


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

  private RewardedInterstitialAd _rewardedInterstitialAd;

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

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

      // create our request used to load the ad.
      var adRequest = new AdRequest();
      adRequest.Keywords.Add("unity-admob-sample");

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

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

              _rewardedInterstitialAd = ad;
          });
  }

[Optional] Serverseitige Überprüfungs-Callbacks (SSV) validieren

Apps, für die zusätzliche Daten in serverseitigen Überprüfungs Callbacks erforderlich sind, sollten die Funktion für benutzerdefinierte Daten von Interstitial-Anzeigen mit Prämie verwenden. Jeder Stringwert, der für ein Objekt für Anzeigen mit Prämie festgelegt wurde, wird an den Abfrageparameter custom_data des SSV-Callbacks übergeben. Wenn kein Wert für benutzerdefinierte Daten festgelegt ist, wird der Wert des Abfrageparameters custom_data nicht in den SSV-Callback aufgenommen.

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

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

        // If the operation completed successfully, no error is returned.
        Debug.Log("Rewarded interstitial 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 dies tun, bevor Sie die Anzeige präsentieren.

Interstitial-Anzeige mit Prämie mit Prämien-Callback präsentieren

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

Der folgende Code zeigt die beste Methode zum Präsentieren einer Interstitial-Anzeige mit Prämie.

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

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

Ereignisse von Interstitial-Anzeigen mit Prämie beobachten

Um das Verhalten Ihrer Anzeige weiter anzupassen, können Sie eine Reihe von Ereignissen im Lebenszyklus der Anzeige nutzen. Registrieren Sie einen Delegaten, wie unten gezeigt, um diese Ereignisse zu beobachten.

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

Interstitial-Anzeige mit Prämie bereinigen

Wenn Sie mit einem RewardedInterstitialAd-Objekt fertig sind, rufen Sie die Methode Destroy() auf, bevor Sie die entsprechende Referenz löschen:

_rewardedInterstitialAd.Destroy();

Dadurch wird das Plug-in darüber informiert, dass das Objekt nicht mehr verwendet wird und der belegte Speicher freigegeben werden kann. Wenn Sie diese Methode nicht aufrufen, kommt es zu Speicherlecks.

Nächste Interstitial-Anzeige mit Prämie vorab laden

RewardedInterstitialAd ist ein Einmalobjekt. Das bedeutet, dass das Objekt nicht noch einmal verwendet werden kann, nachdem eine Interstitial-Anzeige mit Prämie präsentiert wurde. Wenn Sie eine weitere Interstitial-Anzeige mit Prämie anfordern möchten, müssen Sie ein neues RewardedInterstitialAd-Objekt laden.

Um eine Interstitial-Anzeige mit Prämie für die nächste Impression vorzubereiten, laden Sie sie vorab, sobald das Anzeigenereignis OnAdFullScreenContentClosed oder OnAdFullScreenContentFailed ausgelöst wird.

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

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

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

Zusätzliche Ressourcen