Die Funktion zum Vorabladen von Anzeigen wird von Google verwaltet und ist in GMA Next-Gen SDK enthalten. Sie übernimmt das Laden und Caching von Anzeigen für Sie. 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.
- Ablaufbehandlung: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 das Vorabladen von Anzeigen konfigurieren, die Verfügbarkeit von vorabgeladenen Anzeigen prüfen und die vorabgeladene Anzeige präsentieren.
Vorbereitung
Bevor Sie mit der Anleitung fortfahren, müssen Sie Folgendes tun:
- Installieren Sie GMA Next-Gen SDK Version 0.14.0-alpha01 oder höher.
- Richten Sie GMA Next-Gen SDK ein.
- Optional: Laden Sie die Beispiel-App herunter und führen Sie sie aus.
Vorabladen von Anzeigen starten
Rufen Sie startPreload() auf, um mit dem Vorabladen von Anzeigen zu beginnen. Rufen Sie diese Methode
nur einmal zu Beginn der App auf. Nachdem Sie
startPreload(), GMA Next-Gen SDK automatisch
Anzeigen vorab laden und fehlgeschlagene Anfragen für vorabgeladene Konfigurationen wiederholen.
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);
}
Vorabgeladene Anzeige 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 automatisch
die nächste Anzeige im Hintergrund vorab.
Rufen Sie diese Methode erst auf, wenn Sie bereit sind, eine Anzeige zu präsentieren. Wenn Anzeigen im Cache gespeichert bleiben, kann GMA Next-Gen SDK abgelaufene Anzeigen automatisch aktualisieren und den Cache optimieren.
Im folgenden Beispiel wird eine vorabgeladene 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);
}
}
Verfügbarkeit von vorabgeladenen Anzeigen prüfen
Wählen Sie eine der folgenden Optionen aus, um die Verfügbarkeit von Anzeigen zu prüfen:
- Verfügbarkeit von vorabgeladenen Anzeigen abrufen
- Auf Verfügbarkeit von vorabgeladenen Anzeigen warten
Verfügbarkeit von vorabgeladenen 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);
}
Auf Verfügbarkeit von vorabgeladenen Anzeigen warten
Registrieren Sie sich für Vorabladen-Ereignisse, um benachrichtigt zu werden, wenn Anzeigen erfolgreich vorabgeladen 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
startPreload()nicht auf. - Rufen Sie
pollAd()nur auf, wenn die Anzeige sofort präsentiert werden soll.
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 für eine Vorabladen-ID mehr präsentieren müssen, können Sie das Vorabladen von Anzeigen beenden. Rufen Sie destroy() mit einer Vorabladen-ID auf, um das Vorabladen von Anzeigen für eine bestimmte Vorabladen-ID zu beenden.
Zwischenspeichergröße festlegen
Mit der Zwischenspeichergröße wird die Anzahl der vorabgeladenen Anzeigen gesteuert, die im Arbeitsspeicher gespeichert werden. Standardmäßig optimiert Google die Zwischenspeichergröß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 Zwischenspeichergröße festlegen, um die Anzahl der im Arbeitsspeicher gespeicherten Anzeigen zu erhöhen. Wir empfehlen eine Zwischenspeichergröße von maximal vier.
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);
}