Das Vorabladen von Anzeigen ist eine von Google verwaltete Funktion zum Laden von Anzeigen in GMA Next-Gen SDK, mit der das Laden und Caching von Anzeigen in Ihrem Namen verwaltet wird. Für das Vorabladen von Anzeigen muss die Art und Weise geändert werden, wie Sie das Laden von Anzeigen verwalten. Wenn Sie die Leistung durch das Vorabladen von Anzeigen optimieren möchten, deaktivieren Sie das benutzerdefinierte Caching und übertragen Sie diese Aufgabe an das GMA Next-Gen SDK.
Das Vorabladen von Anzeigen bietet gegenüber dem manuellen Laden von Anzeigen folgende Vorteile:
- Referenzverwaltung:Geladene Anzeigen werden gespeichert, sodass Sie Referenzen erst dann verwalten müssen, wenn Sie die Anzeigen präsentieren möchten.
- Automatisches Neuladen:Wenn Sie eine Anzeige aus dem Cache abrufen, wird automatisch eine neue Anzeige geladen.
- Verwaltete Wiederholungen:Fehlgeschlagene Anfragen werden automatisch mit exponentiellem Backoff wiederholt.
- Ablaufverwaltung:Anzeigen werden automatisch aktualisiert, bevor sie ablaufen (in der Regel nach einer Stunde).
- Cache-Optimierung: Wenn Sie eine Cache-Größe von mehr als 1 verwenden, GMA Next-Gen SDK optimiert die Cache-Reihenfolge, um die beste Anzeige auszuliefern.
In dieser Anleitung wird beschrieben, wie Sie Anzeigen vorab laden, die Verfügbarkeit von vorab geladenen Anzeigen prüfen und die vorab geladene Anzeige präsentieren.
Vorbereitung
Bevor Sie mit dieser Anleitung fortfahren, müssen Sie einrichten GMA Next-Gen SDK.
Vorabladen von Anzeigen starten
Wenn die App gestartet wird, rufen Sie die Methode startPreload einmal auf. Nachdem
Sie die startPreload Methode aufgerufen haben, lädt GMA Next-Gen SDK automatisch
Anzeigen vorab und wiederholt fehlgeschlagene Anfragen für vorab geladene Konfigurationen.
Im folgenden Beispiel wird das Vorabladen von Anzeigen gestartet:
Kotlin
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
Vorab geladene Anzeigen abrufen und präsentieren
Wenn Sie das Vorabladen von Anzeigen verwenden, werden die im Cache gespeicherten Anzeigen von GMA Next-Gen SDK verwaltet.
Wenn Sie eine Anzeige präsentieren möchten, rufen Sie pollAd auf.
GMA Next-Gen SDK ruft die verfügbare Anzeige ab und lädt
die nächste Anzeige automatisch im Hintergrund vorab.
Rufen Sie die Methode pollAd erst auf, wenn Sie bereit sind, eine Anzeige zu präsentieren. Wenn Anzeigen im Cache gespeichert werden, kann GMA Next-Gen SDK abgelaufene Anzeigen automatisch aktualisieren
und den Cache optimieren.
Im folgenden Beispiel wird eine vorab geladene Anzeige abgerufen und präsentiert:
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)
// Interact with the ad object as needed.
ad?.apply {
Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
this.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.")
}
override fun onAdPaid(value: AdValue) {
Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
}
}
// Show the ad.
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.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
ad.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.");
}
@Override
public void onAdPaid(AdValue value) {
Log.d(
TAG,
"Interstitial ad onPaidEvent: "
+ value.getValueMicros()
+ " "
+ value.getCurrencyCode());
}
});
// Show the ad.
ad.show(activity);
}
}
Metadaten von vorab geladenen Anzeigen abrufen
Wenn Sie Metadaten von vorab geladenen Anzeigen abrufen möchten, können Sie das Antwortinformationsobjekt der Anzeige suchen. So können Sie die Metadaten der Anzeige prüfen, ohne sie aus dem Cache zu entfernen.
Im folgenden Beispiel werden die Metadaten einer vorab geladenen Anzeige aus dem Antwortinformationsobjekt gesucht:
Kotlin
private fun peekAdResponseInfo(preloadId: String) {
InterstitialAdPreloader.peekAdResponseInfo(preloadId)?.let {
Log.d(TAG, "Peeked ad response ID: ${it.responseId}")
}
}
Java
private void peekAdResponseInfo(String preloadId) {
ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo != null) {
Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());
}
}
Verfügbarkeit von vorab geladenen Anzeigen prüfen
Wenn Sie die Verfügbarkeit von Anzeigen prüfen möchten, haben Sie folgende Möglichkeiten:
- Verfügbarkeit von vorab geladenen Anzeigen abrufen
- Verfügbarkeit von vorab geladenen Anzeigen abfragen
Verfügbarkeit von vorab geladenen Anzeigen abrufen
Im folgenden Beispiel wird die Verfügbarkeit von Anzeigen geprüft:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}
Verfügbarkeit von vorab geladenen Anzeigen abfragen
Registrieren Sie sich für Vorabladen-Ereignisse, um benachrichtigt zu werden, wenn Anzeigen erfolgreich vorab geladen wurden, das Vorabladen fehlgeschlagen ist oder der Anzeigen-Cache erschöpft ist.
Vorabladen-Ereignisse sind für Analysezwecke vorgesehen. Innerhalb von Rückrufen für Vorabladen-Ereignisse gilt Folgendes:
- Rufen Sie
startPreloadnicht auf. - Rufen Sie
pollAdnur auf, wenn die Anzeige sofort präsentiert wird.
Im folgenden Beispiel werden Anzeigenereignisse registriert:
Kotlin
private fun startPreloadingWithCallback(adUnitId: String) {
val preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
object : PreloadCallback {
override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
Log.i(
TAG,
("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
)
// [Optional] Get the error response info for additional details.
// val responseInfo = adError.responseInfo
}
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
private void startPreloadingWithCallback(String adUnitId) {
PreloadCallback preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
new PreloadCallback() {
@Override
public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
Log.e(
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(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(String preloadId, 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);
}
Vorabladen von Anzeigen beenden
Wenn Sie in der Sitzung keine Anzeigen mehr für eine Vorabladen-ID präsentieren müssen, können Sie das Vorabladen von Anzeigen beenden. Wenn Sie das Vorabladen von Anzeigen für eine bestimmte Vorabladen-ID beenden möchten, rufen Sie destroy mit einer Vorabladen-ID auf. Wenn Sie das Vorabladen für alle Vorabladen-IDs beenden möchten, rufen Sie destroyAll auf.
Puffergröße festlegen
Die Puffergröße steuert die Anzahl der vorab geladenen Anzeigen, die im Arbeitsspeicher gespeichert werden. Standardmäßig optimiert Google die Puffergröße, um ein Gleichgewicht zwischen Arbeitsspeicherverbrauch und Latenz bei der Anzeigenauslieferung zu schaffen. Wenn in Ihrer App Anzeigen präsentiert werden, bevor die nächste Anzeige geladen wird, können Sie eine benutzerdefinierte Puffergröße festlegen, um die Anzahl der im Arbeitsspeicher gespeicherten Anzeigen zu erhöhen.
Kotlin
private fun setBufferSize(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void setBufferSize(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
Limits für den Vorabladen-Cache
GMA Next-Gen SDK erzwingt ein app-weites Limit für die Gesamtzahl der vorab geladenen Anzeigen für alle Anzeigenblöcke und Vorabladen-IDs:
- Standardlimit: GMA Next-Gen SDK speichert maximal sechs vorab geladene Anzeigen im Arbeitsspeicher. Dieses Limit gilt für alle Formate und Vorabladen-IDs.
- Wir empfehlen, eine Puffergröße von zwei oder drei pro Vorabladen-ID beizubehalten.