Interstitial-Anzeigen mit Prämie

Interstitials mit Prämie sind ein Anzeigenformat mit Anreizen, bei dem Sie Prämien für Anzeigen anbieten können, die automatisch an natürlichen Übergangspunkten in der App eingeblendet werden. Im Gegensatz zu Anzeigen mit Prämie müssen Nutzer nicht zustimmen, sich Interstitial-Anzeigen mit Prämie anzusehen.

Voraussetzungen

Immer mit Testanzeigen testen

Der Beispielcode unten enthält eine Anzeigenblock-ID, mit der Sie Testanzeigen anfordern können. Es wurde speziell konfiguriert, um bei jeder Anfrage Testanzeigen anstelle von Produktionsanzeigen zurückzugeben, sodass es sicher verwendet werden kann.

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

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

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

Das sind die wichtigsten Schritte zur Einbindung von Interstitial-Anzeigen mit Prämie:

  1. Interstitial-Anzeige mit Prämie laden
  2. [Optional] Rückrufe der serverseitigen Überprüfung (SSV) validieren
  3. Interstitial-Anzeige mit Prämie mit Callback für die Prämie einblenden
  4. Ereignisse für 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 mit der statischen Load()-Methode in der Klasse RewardedInterstitialAd. Für die Lademethode sind eine Anzeigenblock-ID, ein AdRequest-Objekt und ein Abschluss-Handler erforderlich, der aufgerufen wird, wenn das Laden der Anzeigen erfolgreich ist oder fehlschlägt. Das geladene RewardedInterstitialAd-Objekt wird im Abschluss-Handler als Parameter bereitgestellt. Das folgende Beispiel zeigt, wie ein RewardedInterstitialAd geladen wird.


  // 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] Rückrufe der serverseitigen Überprüfung (SSV) validieren

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

Im folgenden Codebeispiel wird gezeigt, wie die SSV-Optionen festgelegt werden, 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 das tun, bevor die Anzeige ausgeliefert wird.

Interstitial-Anzeige mit Prämie mit Callback für die Prämie einblenden

Wenn Sie Ihre Anzeige präsentieren, müssen Sie einen Callback bereitstellen, mit dem die Prämie für den Nutzer verarbeitet wird. Anzeigen können nur einmal pro Ladevorgang ausgeliefert werden. Mit der Methode CanShowAd() können Sie prüfen, ob die Anzeige zur Auslieferung bereit ist.

Mit dem folgenden Code wird die beste Methode zum Ausliefern einer Interstitial-Anzeige mit Prämie dargestellt.

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 für Interstitial-Anzeigen mit Prämie beobachten

Wenn Sie die Funktionsweise der Anzeige weiter anpassen möchten, können Sie verschiedene Ereignisse im Anzeigenlebenszyklus einbinden. Sie können auf diese Ereignisse warten, indem Sie wie unten dargestellt einen Bevollmächtigten registrieren.

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 fertig sind, rufen Sie die Methode Destroy() auf, bevor Sie den Verweis darauf löschen:

_rewardedInterstitialAd.Destroy();

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

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

RewardedInterstitialAd ist ein Objekt zur einmaligen Verwendung. Das bedeutet, dass das Objekt nicht mehr verwendet werden kann, sobald eine Interstitial-Anzeige mit Prämie eingeblendet wird. 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 mögliche Impression vorzubereiten, laden Sie die Interstitial-Anzeige mit Prämie 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();
    };
}

Weitere Informationen