Wstępne ładowanie reklam to funkcja ładowania reklam zarządzana przez Google w Google Mobile Ads SDK która zarządza ładowaniem i buforowaniem reklam w Twoim imieniu. Wstępne ładowanie reklam wymaga zmiany sposobu zarządzania wczytywaniem reklam. Aby zoptymalizować wydajność za pomocą wstępnego ładowania reklam, wyłącz niestandardowe buforowanie i przekaż tę odpowiedzialność Google Mobile Ads SDK.
Wstępne ładowanie reklam ma następujące korzyści 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 pamięci podręcznej o rozmiarze większym 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 tego samouczka, musisz skonfigurować Google Mobile Ads SDK.
Rozpoczęcie wstępnego wczytywania reklam
Gdy aplikacja się uruchomi, wywołaj metodę preload raz. Po
wywołaniu metody preload pakiet Google Mobile Ads SDK automatycznie
wstępnie wczytuje reklamy i ponawia nieudane żądania dotyczące wstępnie wczytanych konfiguracji.
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:(nonnull 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 ładowania reklam, Google Mobile Ads SDK przechowuje reklamy w pamięci podręcznej.
Gdy chcesz wyświetlić reklamę, wywołaj metodę adWithPreloadID.
Google Mobile Ads SDK pobiera dostępną reklamę i automatycznie wstępnie wczytuje
następną reklamę w tle.
Nie wywołuj metody adWithPreloadID, dopóki nie będziesz gotowy do wyświetlenia reklamy. Przechowywanie reklam w pamięci podręcznej umożliwia Google Mobile Ads SDK automatyczne odświeżanie
wygasłych reklam i optymalizowanie pamięci podręcznej.
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 loads 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:(nonnull 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.responseInfo(
with: preloadID)
{
print("Ad response ID: \(responseInfo.responseIdentifier ?? "")")
}
}
Objective-C
- (void)getInterstitialAdResponseInfoWithPreloadID:(nonnull NSString *)preloadID {
// Get the response info for the preloaded ad.
GADResponseInfo *responseInfo =
[GADInterstitialAdPreloader.sharedInstance
adResponseInfoWithPreloadID:preloadID];
if (responseInfo) {
NSLog(@"Ad response ID: %@", responseInfo.responseIdentifier);
}
}
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:(nonnull NSString *)adUnitID {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}
Sprawdzanie dostępności wstępnie wczytanej reklamy
Zarejestruj się, aby otrzymywać powiadomienia o wstępnym wczytywaniu reklam, 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 ładowania:
- 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.
// Don't call InterstitialAdPreloader.shared.preload or
// InterstitialAdPreloader.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.
// 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 z określonym identyfikatorem wstępnego wczytywania, wywołaj funkcję stopPreloadingAndRemoveAdsForPreloadID z identyfikatorem wstępnego wczytywania. Aby zatrzymać wstępne wczytywanie 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 Twoja 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.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: "ca-app-pub-3940256099942544/1712485313")
preloadConfig.bufferSize = 3
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
preloadConfig.bufferSize = 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.