Interstitial-Anzeigen einrichten

Interstitial-Anzeigen sind Vollbildanzeigen, die die Benutzeroberfläche der App überlagern. Sie werden an natürlichen Übergangspunkten in Ihrer App eingeblendet, z. B. zwischen Aktivitäten oder während Pausen in Spielelevels.

Wenn in Ihrer App eine Interstitial-Anzeige eingeblendet wird, können Ihre Nutzer entweder auf die Anzeige tippen und fortfahren oder die Anzeige schließen und zur App zurückkehren. Fallstudie lesen

In dieser Anleitung wird beschrieben, wie Sie Interstitial-Anzeigen in eine Android-App einbinden.

Hinweis

Führen Sie zuerst folgende Schritte aus:

  • Richten Sie GMA Next-Gen SDK ein.
  • Verwenden Sie die Test-Interstitial-Anzeigenblock-ID ca-app-pub-3940256099942544/1033173712.
    • Verwenden Sie beim Entwickeln und Testen Ihrer App Testanzeigen anstelle von aktiven Anzeigen. Wenn Sie die Test-Anzeigenblock-ID nicht verwenden, kann Google Ihr Konto sperren.
    • Ersetzen Sie diese ID durch Ihre Anzeigenblock-ID, bevor Sie Ihre App veröffentlichen.
    • Weitere Informationen zu GMA Next-Gen SDK-Testanzeigen finden Sie unter Testanzeigen aktivieren.

Vorabladen von Anzeigen (Beta)

Mit dem Vorabladen von Anzeigen (Beta) in GMA Next-Gen SDK werden das Laden und Cachen von Anzeigen automatisiert.

Das Vorabladen von Anzeigen bietet folgende Vorteile:

  • Referenzverwaltung: Referenzen werden bis zur Anzeigenschaltung beibehalten.
  • Automatisches Neuladen: Eine neue Anzeige wird geladen, wenn eine aus dem Cache abgerufen wird.
  • Verwaltete Wiederholungsversuche: Lädt eine neue Anzeige, wenn das Laden einer Anzeige fehlschlägt.
  • Ablaufbehandlung: Anzeigen werden vor dem Ablauf aktualisiert.
  • Cache-Optimierung: Die Cache-Reihenfolge wird optimiert, um die Anzeige mit der höchsten Priorität auszuliefern.
Hinweis: Informationen zum manuellen Laden von Anzeigen finden Sie unter Einzelne Interstitial-Anzeige laden.

Vorabladen von Anzeigen starten

Rufen Sie die Methode startPreload() einmal beim Start der App auf, um mit dem Vorabladen von Anzeigen zu beginnen. Nachdem Sie die Methode startPreload() aufgerufen haben, lädt GMA Next-Gen SDK Anzeigen automatisch vor und wiederholt fehlgeschlagene Anfragen für vorab geladene Konfigurationen.

Im folgenden Beispiel sehen Sie, wie Sie das Vorabladen von Anzeigen starten:

Kotlin

private fun startPreloading(adUnitId: String) {
  // Call start() once after SDK initialization.
  // Preload only one ad unit per format to optimize performance.
  val adRequest = AdRequest.Builder(adUnitId).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitId, preloadConfig)
}

Java

private void startPreloading(String adUnitId) {
  // Call start() once after SDK initialization.
  // Preload only one ad unit per format to optimize performance.
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

Ersetzen Sie AD_UNIT_ID durch Ihre Anzeigenblock-ID.

Im vorherigen Beispiel wird gezeigt, wie die Anzeigenblock-ID als Preload-ID verwendet wird. Eine Preload-ID ist eine String-Kennung, die Sie erstellen, um eine Konfiguration für das Vorabladen von Anzeigen zu identifizieren. Wenn für Ihre App mehrere Targeting-Konfigurationen für dieselbe Anzeigenblock-ID erforderlich sind, übergeben Sie eine benutzerdefinierte String-Kennung.

Vorab geladene Anzeige abrufen und einblenden

Wenn Sie eine Anzeige einblenden möchten, rufen Sie die Methode pollAd() auf. GMA Next-Gen SDK ruft eine verfügbare Anzeige ab und lädt die nächste Anzeige automatisch im Hintergrund vor. Wenn keine Anzeige verfügbar ist, gibt GMA Next-Gen SDK keine Anzeigen zurück.

Wenn Sie ein verfügbares Anzeigenobjekt haben, rufen Sie die Methode show auf, um die Anzeige einzublenden. Das folgende Beispiel zeigt, wie eine vorab geladene Anzeige abgerufen und präsentiert wird:

Kotlin

private fun pollAndShowAd(activity: Activity, adUnitId: String) {
  // Polling returns the next available ad and loads another ad in the background.
  val ad = InterstitialAdPreloader.pollAd(adUnitId)
  if (ad == null) {
    Log.e(TAG, "Interstitial ad is not available.")
    return
  }

  // Interact with the ad object as needed.
  Log.d(TAG, "Interstitial ad response info: ${ad.getResponseInfo()}")
  ad.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdImpression() {
        Log.d(TAG, "Interstitial ad recorded an impression.")
      }
    }
  ad.show(activity)
}

Java

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad == null) {
    Log.e(TAG, "Interstitial ad is not available.");
    return;
  }

  Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
  ad.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdImpression() {
          Log.d(TAG, "Interstitial ad recorded an impression.");
        }
      });

  // Show the ad.
  ad.show(activity);
}

Rufen Sie die Methode pollAd() erst auf, wenn Sie bereit sind, eine Anzeige zu präsentieren. Wenn Sie die Informationen zur Anzeigenantwort lesen möchten, ohne sie anzuzeigen, lesen Sie den Abschnitt Antwortinformationen lesen.

Auf Anzeigenereignisse warten

Vor der Auslieferung der Anzeige auf Ad-Events warten. Im folgenden Beispiel werden Callbacks für Anzeigenereignisse registriert:

Kotlin

// Listen for ad events.
val ad = interstitialAd
if (ad == null) {
  Log.e(TAG, "Interstitial ad is not ready yet.")
  return
}

ad.adEventCallback =
  object : InterstitialAdEventCallback {
    override fun onAdShowedFullScreenContent() {
      // Interstitial ad did show.
    }

    override fun onAdDismissedFullScreenContent() {
      // Interstitial ad did dismiss.
      interstitialAd = null
    }

    override fun onAdFailedToShowFullScreenContent(
      fullScreenContentError: FullScreenContentError
    ) {
      // Interstitial ad failed to show.
      Log.e(TAG, "Interstitial ad failed to show: ${fullScreenContentError.message}")
    }

    override fun onAdImpression() {
      // Interstitial ad did record an impression.
    }

    override fun onAdClicked() {
      // Interstitial ad did record a click.
    }
  }

Java

// Listen for ad events.
if (interstitialAd == null) {
  Log.e(TAG, "Interstitial ad is not ready yet.");
  return;
}

interstitialAd.setAdEventCallback(
    new InterstitialAdEventCallback() {
      @Override
      public void onAdShowedFullScreenContent() {
        // Interstitial ad did show.
      }

      @Override
      public void onAdDismissedFullScreenContent() {
        // Interstitial ad did dismiss.
        interstitialAd = null;
      }

      @Override
      public void onAdFailedToShowFullScreenContent(
          @NonNull FullScreenContentError fullScreenContentError) {
        // Interstitial ad failed to show.
        Log.e(TAG, "Interstitial ad failed to show: " + fullScreenContentError.getMessage());
      }

      @Override
      public void onAdImpression() {
        // Interstitial ad did record an impression.
      }

      @Override
      public void onAdClicked() {
        // Interstitial ad did record a click.
      }
    });

Optional: Auf Preloading-Ereignisse warten

Wenn Sie mit dem Vorabladen von Anzeigen beginnen, registrieren Sie sich für Vorabladereignisse, um benachrichtigt zu werden, wenn Anzeigen erfolgreich vorab geladen werden, das Vorabladen fehlschlägt oder der Anzeigencache erschöpft ist.

Das folgende Beispiel zeigt, wie Sie sich für das Vorabladen von Anzeigenereignissen registrieren:

Kotlin

val preloadCallback =
  // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
  object : PreloadCallback {
    override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
      Log.d(
        TAG,
        ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
      )
    }

    override fun onAdsExhausted(preloadId: String) {
      Log.i(TAG, "Interstitial preload ad $preloadId is not available")
      // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
    }

    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
      Log.i(TAG, "Interstitial preload ad $preloadId is available")
    }
  }
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

Java

PreloadCallback preloadCallback =
    // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
    new PreloadCallback() {
      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(
            TAG,
            String.format(
                "Interstitial preload ad %s failed to load with error: %s",
                preloadId, adError.getMessage()));
        // [Optional] Get the error response info for additional details.
        // ResponseInfo responseInfo = adError.getResponseInfo();
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
        // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
      }

      @Override
      public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
      }
    };

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

Wenn eine Anzeige nicht geladen werden kann, lädt GMA Next-Gen SDK automatisch Anzeigen vor und wiederholt fehlgeschlagene Anfragen für vorab geladene Konfigurationen.

Optional: Verfügbarkeit von Anzeigen prüfen

Wenn Sie wissen möchten, ob eine Anzeige verfügbar ist, prüfen Sie die Anzeigenverfügbarkeit. Im folgenden Beispiel wird geprüft, ob eine vorab geladene Anzeige verfügbar ist:

Kotlin

private fun isAdAvailable(adUnitId: String): Boolean {
  return InterstitialAdPreloader.isAdAvailable(adUnitId)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return InterstitialAdPreloader.isAdAvailable(adUnitId);
}

Optional: Puffergröße festlegen

Die Puffergröße steuert die Anzahl der vorab geladenen Anzeigen, die im Speicher gehalten werden. Standardmäßig optimiert Google die Puffergröße, um den Arbeitsspeicherverbrauch und die Latenz beim Ausliefern von Anzeigen auszugleichen. Sie können eine benutzerdefinierte Puffergröße festlegen, um die Anzahl der im Speicher behaltenen Anzeigen zu erhöhen. Wir empfehlen eine Puffergröße von zwei vorab geladenen Anzeigen.

Das folgende Beispiel zeigt, wie eine Puffergröße festgelegt wird:

Kotlin

private fun setBufferSize(adUnitId: String) {
  val adRequest = AdRequest.Builder(adUnitId).build()
  // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
  val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2)
  InterstitialAdPreloader.start(adUnitId, preloadConfig)
}

Java

private void setBufferSize(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

Cache-Limits für das Vorladen

GMA Next-Gen SDK erzwingt ein appweites Limit für die Gesamtzahl der vorab geladenen Anzeigen für alle Anzeigenblöcke und Vorab-Lade-IDs:

  • Standardlimit: Google hält maximal sechs vorab geladene Anzeigen im Arbeitsspeicher. Dieses Limit gilt für alle Formate und Preload-IDs.
  • Wir empfehlen, für jede Preload-ID eine Puffergröße von zwei beizubehalten.

Optional: Vorabladen von Anzeigen beenden

Wenn Sie für eine bestimmte Preload-ID in der Sitzung keine Anzeigen mehr ausliefern müssen, können Sie das Preloading von Anzeigen beenden. Wenn Sie das Laden von Anzeigen für eine bestimmte Preload-ID beenden möchten, rufen Sie die Methode destroy() mit einer Preload-ID auf. Wenn Sie die Methode destroy() aufrufen, werden alle vorab geladenen Anzeigen, die mit der Vorab-Lade-ID verknüpft sind, aus dem Cache entfernt.

Das folgende Beispiel zeigt, wie Sie das Vorabladen von Anzeigen beenden:

Kotlin

private fun stopPreloading(adUnitId: String) {
  // Stops the preloading and destroy preloaded ads.
  InterstitialAdPreloader.destroy(adUnitId)
}

Java

private void stopPreloading(String adUnitId) {
  // Stops the preloading and destroy preloaded ads.
  InterstitialAdPreloader.destroy(adUnitId);
}

Optional: Antwortinformationen lesen

Die Antwortinformationen der nächsten vorab geladenen Anzeige lesen, ohne die Anzeige aus dem Cache zu entfernen.

Im folgenden Beispiel wird gezeigt, wie Sie die Informationen zur nächsten vorab geladenen Anzeigenantwort lesen:

Kotlin

val responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId)
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.")
  return
}

Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")

Java

ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.");
  return;
}

Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());