App-Start-Anzeigen einrichten

App-Start-Anzeigen sind ein Anzeigenformat für Publisher, die die Ladebildschirme ihrer App monetarisieren möchten. Nutzer können App-Open-Anzeigen jederzeit schließen. Blenden Sie App-Start-Anzeigen ein, wenn Nutzer Ihre App in den Vordergrund holen.

Weitere Informationen finden Sie unter App-Start-Anzeigen-Richtlinien.

In dieser Anleitung wird beschrieben, wie Sie App-Start-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-Anzeigenblock-ID für App-Start-Anzeigen ca-app-pub-3940256099942544/9257395921.
    • 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 App-Start-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

val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
AppOpenAdPreloader.start(adUnitId, preloadConfig)

Java

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
AppOpenAdPreloader.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 = AppOpenAdPreloader.pollAd(adUnitId)
  if (ad == null) {
    Log.e(TAG, "App open ad is not available.")
    return
  }

  // Interact with the ad object as needed.
  Log.d(TAG, "App open ad response info: ${ad.getResponseInfo()}")
  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdImpression() {
        Log.d(TAG, "App open 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.
  AppOpenAd ad = AppOpenAdPreloader.pollAd(adUnitId);

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

  Log.d(TAG, "App open ad response info: " + ad.getResponseInfo());
  ad.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdImpression() {
          Log.d(TAG, "App open 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

private fun listenToAdEvents() {
  // Listen for ad events.
  val ad = appOpenAd
  if (ad == null) {
    Log.e(TAG, "App open ad is not ready yet.")
    return
  }

  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // App open ad did show.
      }

      override fun onAdDismissedFullScreenContent() {
        // App open ad did dismiss.
        appOpenAd = null
      }

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

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

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

Java

private void listenToAdEvents() {
  // Listen for ad events.
  if (appOpenAd == null) {
    Log.e(TAG, "App open ad is not ready yet.");
    return;
  }

  appOpenAd.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          // App open ad did show.
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // App open ad did dismiss.
          appOpenAd = null;
        }

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

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

        @Override
        public void onAdClicked() {
          // App open 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 =
  object : PreloadCallback {
    override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
      Log.d(TAG, "App open preload ad $preloadId failed to load with error: ${adError.message}")
    }

    override fun onAdsExhausted(preloadId: String) {
      Log.i(TAG, "App open preload ad $preloadId is not available")
    }

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

Java

PreloadCallback preloadCallback =
    new PreloadCallback() {
      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(
            TAG,
            String.format(
                "App open preload ad %s failed to load with error: %s",
                preloadId, adError.getMessage()));
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        Log.i(TAG, String.format("App open preload ad %s is not available", preloadId));
      }

      @Override
      public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        Log.i(TAG, String.format("App open preload ad %s is available", preloadId));
      }
    };
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
AppOpenAdPreloader.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 AppOpenAdPreloader.isAdAvailable(adUnitId)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return AppOpenAdPreloader.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

val adRequest = AdRequest.Builder(adUnitId).build()
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2)
AppOpenAdPreloader.start(adUnitId, preloadConfig)

Java

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);
AppOpenAdPreloader.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.
  AppOpenAdPreloader.destroy(adUnitId)
}

Java

private void stopPreloading(String adUnitId) {
  // Stops the preloading and destroy preloaded ads.
  AppOpenAdPreloader.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 = AppOpenAdPreloader.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 = AppOpenAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.");
  return;
}

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

Kaltstarts und Ladebildschirme verarbeiten

Ein Kaltstart erfolgt, wenn Ihre App von der Festplatte gestartet wird. Ein Warmstart erfolgt, wenn Sie die App aus dem Arbeitsspeicher wieder öffnen. Bei einem Kaltstart ist keine vorab geladene Anzeige verfügbar, die sofort ausgeliefert werden kann. Bei einem Warmstart ist möglicherweise noch eine vorab geladene Anzeige verfügbar.

Bei einem Kaltstart interagieren Nutzer möglicherweise mit Ihrer App, bevor sie geladen und eine Anzeige eingeblendet wird. Um eine schlechte Nutzererfahrung zu vermeiden, sollten Sie App-Start-Anzeigen bei Kaltstarts nur auf einem Ladebildschirm einblenden, während die App-Assets geladen werden. Wenn das Laden des Assets abgeschlossen ist und der Nutzer den Hauptinhalt erreicht, bevor die Anzeige geladen wird, sollte die Anzeige nicht präsentiert werden.

Empfehlungen

Beachten Sie die folgenden Empfehlungen für App-Start-Anzeigen:

  • Blenden Sie beim ersten Start der App keine App-Start-Anzeige ein.
  • Wenn der Ladevorgang des Ladebildschirms abgeschlossen ist, während die Anzeige präsentiert wird, schließen Sie den Ladebildschirm in der Callback-Methode für das Schließen der Anzeige.
  • App-Start-Anzeigen laufen vier Stunden nach dem Laden ab. Blenden Sie keine App-Start-Anzeige ein, die vor mehr als vier Stunden geladen wurde.