Interstitial-Anzeigen

Interstitial-Anzeigen sind Vollbildanzeigen, die die Benutzeroberfläche ihrer Host-App überlagern. Sie werden in der Regel an natürlichen Übergangspunkten innerhalb einer App angezeigt, z. B. in den Pausen zwischen den Levels eines Spiels. Wenn in einer App eine Interstitial-Anzeige eingeblendet wird, kann der Nutzer entweder auf die Anzeige tippen und zum Ziel weitergeleitet werden oder sie schließen und zur App zurückkehren.

In diesem Leitfaden wird erläutert, wie Sie Interstitial-Anzeigen in eine Unity-App einbinden.

Vorbereitung

Verwenden Sie immer Testanzeigen

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

Nachdem Sie jedoch eine App in der Ad Manager-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 Testgerät konfigurieren.

/21775744923/example/interstitial

Mobile Ads SDK initialisieren

Bevor Anzeigen geladen werden, muss Ihre App das Mobile Ads SDK initialisieren, indem MobileAds.Initialize() aufgerufen wird. Dies muss nur einmal erfolgen, idealerweise beim Starten 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, bevor Sie Anzeigen laden. So wird sichergestellt, dass alle Vermittlungsadapter initialisiert werden.

Implementierung

Die wichtigsten Schritte zur Integration von Interstitial-Anzeigen:

  1. Interstitial-Anzeige laden
  2. Interstitial-Anzeige ausliefern
  3. Auf Interstitial-Anzeigenereignisse warten
  4. Interstitial-Anzeige bereinigen
  5. Nächste Interstitial-Anzeige vorab laden

Interstitial-Anzeige laden

Das Laden einer Interstitial-Anzeige erfolgt über die statische Methode Load() der Klasse InterstitialAd. Für die Lademethode sind eine Anzeigenblock-ID, ein AdManagerAdRequest-Objekt und ein Abschluss-Handler erforderlich, der aufgerufen wird, wenn das Anzeigenladen erfolgreich oder fehlgeschlagen ist. Das geladene AdManagerInterstitialAd-Objekt wird als Parameter im Abschluss-Handler bereitgestellt. Das folgende Beispiel zeigt, wie eine AdManagerInterstitialAd geladen wird.


  // This ad unit is configured to always serve test ads.
  private string _adUnitId = "/21775744923/example/interstitial";

  private InterstitialAd _interstitialAd;

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

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

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

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

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

              _interstitialAd = ad;
          });
  }

Interstitial-Anzeige ausliefern

Wenn Sie eine geladene Interstitial-Anzeige präsentieren möchten, rufen Sie die Methode Show() für die Instanz AdManagerInterstitialAd auf. Anzeigen werden möglicherweise einmal pro Ladevorgang ausgeliefert. Verwenden Sie die Methode CanShowAd(), um zu prüfen, ob die Anzeige ausgeliefert werden kann.

/// <summary>
/// Shows the interstitial ad.
/// </summary>
public void ShowInterstitialAd()
{
    if (_interstitialAd != null && _interstitialAd.CanShowAd())
    {
        Debug.Log("Showing interstitial ad.");
        _interstitialAd.Show();
    }
    else
    {
        Debug.LogError("Interstitial ad is not ready yet.");
    }
}

Auf Interstitial-Anzeigenereignisse warten

Wenn Sie das Verhalten Ihrer Anzeige weiter anpassen möchten, können Sie eine Reihe von Ereignissen im Lebenszyklus der Anzeige verknüpfen. Sie können diese Ereignisse überwachen, indem Sie wie unten gezeigt einen Delegaten registrieren.

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

Interstitial-Anzeige bereinigen

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

_interstitialAd.Destroy();

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

Nächste Interstitial-Anzeige vorab laden

Interstitial-Anzeigen sind Objekte zur einmaligen Verwendung. Das bedeutet, dass das Objekt nach der Auslieferung einer Interstitial-Anzeige nicht mehr verwendet werden kann. Wenn Sie eine weitere Interstitial-Anzeige anfordern möchten, erstellen Sie ein neues AdManagerInterstitialAd-Objekt.

Wenn Sie eine Interstitial-Anzeige für die nächste Impressionschance vorbereiten möchten, laden Sie sie vor, sobald das Anzeigenereignis OnAdFullScreenContentClosed oder OnAdFullScreenContentFailed ausgelöst wird.

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

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

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

App-Ereignisse

Mit App-Ereignissen können Sie Anzeigen erstellen, über die Nachrichten an den App-Code gesendet werden können. Die App kann dann auf Grundlage dieser Nachrichten Maßnahmen ergreifen.

Mit AppEvent können Sie auf Ad Manager-spezifische App-Ereignisse warten. Diese Ereignisse können jederzeit während des Lebenszyklus der Anzeige auftreten, auch bevor „load“ aufgerufen wird.

namespace GoogleMobileAds.Api.AdManager;

/// The App event message sent from the ad.
public class AppEvent
{
    // Name of the app event.
    string Name;
    // Argument passed from the app event.
    string Value;
}

OnAppEventReceived wird ausgelöst, wenn ein App-Ereignis in einer Anzeige auftritt. Hier ein Beispiel dafür, wie Sie dieses Ereignis in Ihrem Code verarbeiten:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
    Debug.Log($"Received app event from the ad: {args.Name}, {args.Value}.");
};

Im folgenden Beispiel wird gezeigt, wie Sie die Hintergrundfarbe Ihrer App je nach App-Ereignis mit dem Namen „color“ ändern:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
  if (args.Name == "color")
  {
    Color color;
    if (ColorUtility.TryParseColor(arg.Value, out color))
    {
      gameObject.GetComponent<Renderer>().material.color = color;
    }
  }
};

Hier ist das entsprechende Creative, das das Ereignis „App-Farbe“ sendet:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Best Practices

Entscheiden Sie, ob Interstitial-Anzeigen die richtige Art von Anzeigen für Ihre App sind.
Interstitial-Anzeigen funktionieren am besten in Apps mit natürlichen Übergangspunkten. Ein solcher Punkt wird durch den Abschluss einer Aufgabe in einer App erstellt, z. B. durch das Teilen eines Bildes oder das Abschließen eines Spiellevels. Überlegen Sie sich, an welchen Stellen in der App Interstitial-Anzeigen am besten präsentiert werden können und wie Nutzer wahrscheinlich reagieren.
Pausieren Sie die Aktion, wenn eine Interstitial-Anzeige ausgeliefert wird.
Es gibt verschiedene Arten von Interstitial-Anzeigen, z. B. Text-, Bild- oder Videoanzeigen. Achten Sie darauf, dass die Verwendung einiger Ressourcen in Ihrer App ausgesetzt wird, wenn eine Interstitialanzeige eingeblendet wird, damit die Anzeige diese Ressourcen nutzen kann. Wenn Sie beispielsweise den Aufruf zum Anzeigen einer Interstitial-Anzeige starten, sollten Sie alle Audioausgaben Ihrer App pausieren. Sie können die Wiedergabe von Tönen im Ereignis OnAdFullScreenContentClosed() fortsetzen, das aufgerufen werden kann, wenn der Nutzer die Interaktion mit der Anzeige beendet hat. Außerdem sollten Sie alle intensiven Rechenaufgaben wie einen Gameloop vorübergehend anhalten, während die Anzeige ausgeliefert wird. So wird verhindert, dass die Grafiken langsam oder nicht reagieren oder das Video ruckelt.
Überschütten Sie die Nutzer nicht mit Anzeigen.
Die Häufigkeit von Interstitial-Anzeigen in Ihrer App zu erhöhen, mag zwar eine gute Möglichkeit sein, den Umsatz zu steigern, kann aber auch die Nutzerfreundlichkeit beeinträchtigen und die Klickraten senken. Achten Sie darauf, dass Nutzer nicht so häufig unterbrochen werden, dass sie Ihre App nicht mehr richtig nutzen können.

Zusätzliche Ressourcen