Wstępne wczytywanie reklam to funkcja wczytywania reklam zarządzana przez Google w Google Mobile Ads SDK która zarządza wczytywaniem i buforowaniem reklam w Twoim imieniu. 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ż tę odpowiedzialność Google Mobile Ads SDK.
Wstępne wczytywanie reklam ma następujące zalety w porównaniu z ręcznym wczytywaniem reklam:
- Zarządzanie odwołaniami: przechowuje wczytane 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 ją z pamięci podręcznej.
- Zarządzane ponowne próby: automatycznie ponawia nieudane żądania przy użyciu algorytmu wzrastający czas do ponowienia.
- Obsługa wygasania: automatycznie odświeża reklamy przed ich wygaśnięciem (zwykle po godzinie).
- Optymalizacja pamięci podręcznej: jeśli używasz rozmiaru pamięci podręcznej większego niż 1, Google Mobile Ads SDK optymalizuje kolejność w pamięci podręcznej, aby wyświetlać najlepszą reklamę.
Z tego przewodnika dowiesz się, jak skonfigurować wstępne wczytywanie reklam, sprawdzić dostępność wstępnie wczytanych reklam i wyświetlić wstępnie wczytaną reklamę.
Wymagania wstępne
Zanim przejdziesz do samouczka, musisz wykonać te czynności:
- Zainstaluj Google Mobile Ads SDK w wersji 13.3.0 lub nowszej. Materiały dla programistów dotyczące starszych wersji są dostępne w wersjach 11.12.0–12.2.0, ale zalecamy korzystanie z wersji 13.3.0 lub nowszej i postępowanie zgodnie z tym przewodnikiem.
- Skonfiguruj Google Mobile Ads SDK.
- Opcjonalnie: pobierz i uruchom przykładową aplikację do wstępnego wczytywania reklam.
Importowanie nagłówków wersji beta
Aby korzystać ze wstępnego wczytywania reklam, zaimportuj nagłówki wersji beta:
Swift
import GoogleMobileAds_Private
Objective-C
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Rozpoczynanie wstępnego wczytywania reklam
Aby rozpocząć wstępne wczytywanie reklam, wywołaj funkcję preload(). Wywołaj tę metodę tylko raz na identyfikator wstępnego wczytywania. Zalecamy wywołanie tej metody na początku sesji aplikacji. Po wywołaniu funkcji preload(), Google Mobile Ads SDK
automatycznie wstępnie wczytuje reklamy i ponawia nieudane żądania dla tych identyfikatorów wstępnego wczytywania.
Poniższy przykład rozpoczyna wstępne wczytywanie reklam:
Swift
private func startPreloading(adUnitID: String) {
// Start the preloading initialization process.
let request = Request()
let interstitialConfig = PreloadConfigurationV2(adUnitID: adUnitID, request: request)
InterstitialAdPreloader.shared.preload(
for: adUnitID, configuration: interstitialConfig, delegate: self)
}
Objective-C
- (void)startPreloadingWithAdUnitID:(NSString *)adUnitID {
// Start the preloading initialization process.
GADRequest *request = [GADRequest request];
GADPreloadConfigurationV2 *interstitialConfig = [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID request:request];
[GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:adUnitID
configuration:interstitialConfig
delegate:self];
}
Pobieranie i wyświetlanie wstępnie wczytanej reklamy
Gdy używasz wstępnego wczytywania reklam, Google Mobile Ads SDK przechowuje reklamy w pamięci podręcznej.
Gdy chcesz wyświetlić reklamę, wywołaj funkcję adWithPreloadID().
Google Mobile Ads SDK pobiera dostępną reklamę i automatycznie wstępnie wczytuje
następną reklamę w tle.
Poniższy przykład pobiera i wyświetla wstępnie wczytaną reklamę:
Swift
private func showInterstitialAd(adUnitID: String) {
// Verify that the preloaded ad is available before polling.
guard isInterstitialAvailable(adUnitID: adUnitID) else {
print("Preloaded interstitial ad is not available.")
return
}
// Polling returns the next available ad and load another ad in the background.
let ad = InterstitialAdPreloader.shared.ad(with: adUnitID)
// Interact with the ad object as needed.
print("Interstitial ad response info: \(String(describing: ad?.responseInfo))")
ad?.paidEventHandler = { (value: AdValue) in
print("Interstitial ad paid event: \(value.value), \(value.currencyCode)")
}
ad?.fullScreenContentDelegate = self
ad?.present(from: self)
}
Objective-C
- (void)showInterstitialAdWithAdUnitID:(NSString *)adUnitID {
// Verify that the preloaded ad is available before polling.
if (![self isInterstitialAvailableWithAdUnitID:adUnitID]) {
NSLog(@"Preloaded interstitial ad is not available.");
return;
}
// Getting the preloaded ad loads another ad in the background.
GADInterstitialAd *ad = [GADInterstitialAdPreloader.sharedInstance adWithPreloadID:adUnitID];
// Interact with the ad object as needed.
NSLog(@"Interstitial ad response info: %@", ad.responseInfo);
ad.paidEventHandler = ^(GADAdValue *_Nonnull value) {
NSLog(@"Interstitial ad paid event: %@ %@ ", value.value, value.currencyCode);
};
ad.fullScreenContentDelegate = self;
[ad presentFromRootViewController:self];
}
Pobieranie metadanych wstępnie wczytanej reklamy
Aby pobrać metadane wstępnie wczytanej 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 informacji o odpowiedzi:
Swift
private func getInterstitialAdResponseInfo(preloadID: String) {
// Get the response info for the preloaded ad.
if let responseInfo = InterstitialAdPreloader.shared.adResponseInfo(withPreloadID: preloadID) {
print("Ad response ID: \(responseInfo.responseID)")
}
}
Objective-C
- (void)getInterstitialAdResponseInfoWithPreloadID:(NSString *)preloadID {
// Get the response info for the preloaded ad.
GADResponseInfo *responseInfo =
[GADInterstitialAdPreloader.sharedInstance
adResponseInfoWithPreloadID:preloadID];
if (responseInfo) {
NSLog(@"Ad response ID: %@", responseInfo.responseID);
}
}
Sprawdzanie dostępności wstępnie wczytanej reklamy
Aby sprawdzić dostępność reklamy, wykonaj jedną z tych czynności:
Sprawdzanie dostępności wstępnie wczytanej reklamy
Poniższy przykład sprawdza dostępność reklamy:
Swift
private func isInterstitialAvailable(adUnitID: String) -> Bool {
// Verify that an ad is available before polling.
return InterstitialAdPreloader.shared.isAdAvailable(with: adUnitID)
}
Objective-C
- (BOOL)isInterstitialAvailableWithAdUnitID:(NSString *)adUnitID {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}
Nasłuchiwanie dostępności wstępnie wczytanej reklamy
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 pamięć podręczna reklam zostanie wyczerpana.
Zdarzenia wstępnego wczytywania są przeznaczone do celów analitycznych. W przypadku wywołań zwrotnych zdarzeń wstępnego wczytywania:
- Nie wywołuj funkcji
preload(). - Unikaj wywoływania funkcji
adWithPreloadID(), chyba że reklama będzie wyświetlana natychmiast.
Poniższy przykład rejestruje zdarzenia reklamowe:
Swift
func adAvailable(forPreloadID preloadID: String, responseInfo: ResponseInfo) {
// This callback indicates that an ad is available for the specified configuration.
// No action is required here, but updating the UI can be useful in some cases.
print("Ad preloaded successfully for ad preload ID: \(preloadID)")
}
func adsExhausted(forPreloadID preloadID: String) {
// This callback indicates that all the ads for the specified configuration have been
// consumed and no ads are available to show. No action is required here, but updating
// the UI can be useful in some cases.
// [Important] Don't call AdPreloader.shared.preload or AdPreloader.shared.ad
// from adsExhausted.
print("Ad exhausted for ad preload ID: \(preloadID)")
}
func adFailedToPreload(forPreloadID preloadID: String, error: Error) {
print(
"Ad failed to load with ad preload ID: \(preloadID), Error: \(error.localizedDescription)"
)
}
Objective-C
- (void)adAvailableForPreloadID:(nonnull NSString *)preloadID responseInfo:(nonnull GADResponseInfo *)responseInfo {
// This callback indicates that an ad is available for the specified configuration.
// No action is required here, but updating the UI can be useful in some cases.
NSLog(@"Ad preloaded successfully for ad unit ID: %@", preloadID);
}
- (void)adsExhaustedForPreloadID:(nonnull NSString *)preloadID {
// This callback indicates that all the ads for the specified configuration have been
// consumed and no ads are available to show. No action is required here, but updating
// the UI can be useful in some cases.
// [Important] Don't call [GAD<Format>AdPreloader preloadForPreloadID:] or
// [GAD<Format>AdPreloader adWithPreloadID:] from adsExhaustedForPreloadID.
NSLog(@"Ad exhausted for ad preload ID: %@", preloadID);
}
- (void)adFailedToPreloadForPreloadID:(nonnull NSString *)preloadID error:(nonnull NSError *)error {
NSLog(@"Ad failed to load with ad preload ID: %@, Error: %@", preloadID, error.localizedDescription);
}
Zatrzymywanie wstępnego wczytywania reklam
Jeśli nie musisz już wyświetlać reklam z identyfikatorem wstępnego wczytywania w sesji, możesz zatrzymać wstępne wczytywanie reklam. Aby zatrzymać wstępne wczytywanie reklam dla określonego identyfikatora wstępnego wczytywania, wywołaj funkcję stopPreloadingAndRemoveAdsForPreloadID() z identyfikatorem wstępnego wczytywania. Aby zatrzymać wstępne wczytywanie dla wszystkich wstępnych wczytywarek, wywołaj funkcję stopPreloadingAndRemoveAllAds().
Ustawianie rozmiaru bufora
Rozmiar bufora określa liczbę wstępnie wczytanych reklam przechowywanych w pamięci. Domyślnie Google optymalizuje rozmiar bufora, aby zrównoważyć zużycie pamięci i opóźnienie wyświetlania reklam. Jeśli aplikacja wyświetla reklamy, zanim zostanie wczytana następna reklama, możesz ustawić niestandardowy rozmiar bufora, aby zwiększyć liczbę reklam przechowywanych w pamięci. Zalecamy rozmiar bufora wynoszący 2 lub 3.
Limity pamięci podręcznej wstępnego wczytywania
Google Mobile Ads SDK wymusza limit w całej aplikacji dotyczący łącznej liczby wstępnie wczytanych reklam we wszystkich jednostkach reklamowych i identyfikatorach wstępnego wczytywania:
- Domyślny limit: Google Mobile Ads SDK przechowuje 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, aby rozmiar bufora wynosił 2 lub 3 na identyfikator wstępnego wczytywania.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: "/21775744923/example/rewarded")
preloadConfig.bufferSize = 3
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"/21775744923/example/rewarded"];
preloadConfig.bufferSize = 3;