Wstępne wczytywanie reklam to zarządzana przez Google funkcja wczytywania reklam w usłudze GMA Next-Gen SDK, która w Twoim imieniu zarządza wczytywaniem i buforowaniem reklam. Wstępne wczytywanie reklam wymaga zmiany sposobu zarządzania wczytywaniem reklam. Aby zoptymalizować wydajność za pomocą wstępnego wczytywania reklam, wyłącz niestandardowe buforowanie i przekaż to zadanie do GMA Next-Gen SDK.
Wstępne wczytywanie reklam ma te zalety w porównaniu z ręcznym wczytywaniem reklam:
- Zarządzanie odwołaniami: przechowuje załadowane reklamy, dzięki czemu nie musisz utrzymywać odwołań, dopóki nie będziesz gotowy do ich wyświetlenia.
- Automatyczne ponowne wczytywanie: automatycznie wczytuje nową reklamę, gdy wyjmiesz jedną z pamięci podręcznej.
- Zarządzane ponowne próby: automatycznie ponawia próby nieudanych żądań przy użyciu algorytmu wzrastający czas do ponowienia.
- Obsługa wygasania: automatycznie odświeża reklamy, zanim wygasną (zwykle po godzinie).
- Optymalizacja pamięci podręcznej: jeśli używasz rozmiaru pamięci podręcznej większego niż 1, GMA Next-Gen SDKoptymalizuje kolejność pamięci podręcznej, aby wyświetlać najlepszą reklamę.
Z tego przewodnika dowiesz się, jak skonfigurować reklamy wstępnie wczytywane, sprawdzić ich dostępność i wyświetlić je.
Wymagania wstępne
Zanim przejdziesz do samouczka, musisz wykonać te czynności:
- Zainstaluj GMA Next-Gen SDK w wersji 0.14.0-alpha01 lub nowszej.
- Skonfiguruj GMA Next-Gen SDK.
- Opcjonalnie: pobierz i uruchom przykładową aplikację.
Rozpocznij wstępne wczytywanie reklam
Aby rozpocząć wstępne wczytywanie reklam, wywołaj funkcję startPreload(). Wywołuj tę metodę tylko raz na identyfikator wstępnego wczytywania. Zalecamy wywołanie tej metody na początku sesji aplikacji. Po wywołaniu funkcji startPreload() GMA Next-Gen SDK
automatycznie wstępnie wczytuje reklamy i ponawia nieudane żądania dotyczące tych identyfikatorów wstępnego wczytywania.
Poniższy przykład rozpoczyna wstępne wczytywanie reklam:
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);
}
Pobieranie i wyświetlanie wstępnie wczytanej reklamy
Podczas wstępnego wczytywania reklam GMA Next-Gen SDK przechowuje reklamy w pamięci podręcznej.
Gdy chcesz wyświetlić reklamę, wywołaj funkcję pollAd().
GMA Next-Gen SDK pobiera dostępną reklamę i automatycznie wstępnie wczytuje kolejną reklamę w tle.
Ten przykład pobiera i wyświetla wstępnie wczytaną reklamę:
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);
}
}
Pobieranie metadanych wstępnie wczytanej reklamy
Aby uzyskać wstępnie załadowane metadane reklamy, możesz wyszukać obiekt informacji o odpowiedzi reklamy. Ten proces umożliwia sprawdzenie metadanych reklamy bez usuwania jej z pamięci podręcznej.
Poniższy przykład wyszukuje metadane wstępnie wczytanej reklamy w obiekcie responseInfo:
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());
}
}
Sprawdzanie dostępności reklamy do wstępnego wczytywania
Aby sprawdzić dostępność reklam, wybierz jedną z tych opcji:
Sprawdzanie dostępności wstępnie wczytanych reklam
Poniższy przykład sprawdza dostępność reklamy:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}
Sprawdzanie dostępności wstępnie wczytanych reklam
Zarejestruj się, aby otrzymywać powiadomienia o zdarzeniach wstępnego wczytywania, gdy reklamy zostaną wstępnie wczytane, nie uda się ich wstępnie wczytać lub gdy wyczerpie się pamięć podręczna reklam.
Zdarzenia wstępnego wczytywania są przeznaczone do celów analitycznych. W funkcjach zwrotnych zdarzenia wstępnego wczytywania:
- Nie dzwoń pod numer
startPreload(). - Nie wywołuj funkcji
pollAd(), chyba że reklama będzie wyświetlana natychmiast.
W tym przykładzie rejestrujemy zdarzenia związane z reklamami:
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);
}
Zatrzymywanie wstępnego wczytywania reklam
Jeśli nie musisz ponownie wyświetlać reklam dla identyfikatora wstępnego wczytywania w sesji, możesz zatrzymać wstępne wczytywanie reklam. Aby zatrzymać wstępne wczytywanie reklam dla konkretnego identyfikatora wstępnego wczytywania, wywołaj funkcję destroy() z identyfikatorem wstępnego wczytywania. Aby zatrzymać wstępne wczytywanie wszystkich wstępnie wczytywanych elementów, wywołaj funkcję
destroyAll().
Ustawianie rozmiaru bufora
Rozmiar bufora określa liczbę wstępnie wczytanych reklam przechowywanych w pamięci. Domyślnie Google optymalizuje rozmiar bufora, aby zachować równowagę między zużyciem pamięci a opóźnieniem wyświetlania reklam. Jeśli aplikacja wyświetla reklamy, zanim zostanie wczytana następna, możesz ustawić niestandardowy rozmiar bufora, aby zwiększyć liczbę reklam przechowywanych w pamięci. Zalecamy rozmiar bufora wynoszący 2 lub 3.
Limity wstępnego wczytywania pamięci podręcznej
GMA Next-Gen SDK wymusza w aplikacji limit łącznej liczby wstępnie wczytanych reklam we wszystkich jednostkach reklamowych i identyfikatorach wstępnego wczytywania:
- Limit domyślny: GMA Next-Gen SDK może przechowywać w pamięci maksymalnie 6 wstępnie wczytanych reklam. Ten limit jest wspólny dla wszystkich formatów i identyfikatorów wstępnego wczytywania.
- Zalecamy zachowanie rozmiaru bufora wynoszącego 2–3 w przypadku każdego identyfikatora wstępnego wczytywania.
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);
}