Wstępne ładowanie 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 ładowanie reklam wymaga zmiany sposobu zarządzania wczytywaniem reklam. Aby zoptymalizować skuteczność za pomocą wstępnego ładowania reklam, wyłącz niestandardowe buforowanie i przekaż to zadanie usłudze Google Mobile Ads SDK.
Wstępne ładowanie 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(-a) do ich wyświetlenia.
- Automatyczne ponowne wczytywanie: automatycznie wczytuje nową reklamę, gdy wyciągniesz ją z pamięci podręcznej.
- Zarządzane ponowne próby: automatycznie ponawia nieudane żądania, stosując 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 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ć reklamy z wstępnym wczytywaniem, sprawdzić ich dostępność i je wyświetlać.
Wymagania wstępne
Zanim przejdziesz do tego samouczka, musisz skonfigurować Google Mobile Ads SDK.
Rozpocznij wstępne wczytywanie reklam
Po uruchomieniu aplikacji wywołaj metodę preload raz. Po wywołaniu metody preload 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
// 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
// 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
Podczas korzystania ze 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.
Unikaj wywoływania metody adWithPreloadID, dopóki nie będziesz gotowy(-a) 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 optymalizację 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 wczytanych reklam
Aby uzyskać wstępnie załadowane metadane reklamy, możesz wyszukać obiekt informacji o odpowiedzi na reklamę. Dzięki temu możesz sprawdzić metadane reklamy bez usuwania jej z pamięci podręcznej.
Poniższy przykład wyszukuje metadane wstępnie załadowanej reklamy z obiektu 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 reklam do wstępnego wczytania
Aby sprawdzić dostępność reklam, wybierz jedną z tych opcji:
- Sprawdzanie dostępności reklamy do wstępnego wczytania
- Nasłuchiwanie dostępności reklam do wstępnego wczytania
Sprawdzanie dostępności wstępnie wczytanych reklam
Ten 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];
}
Nasłuchiwanie dostępności wstępnie wczytanych reklam
Zarejestruj się, aby otrzymywać powiadomienia o zdarzeniach wstępnego ładowania, gdy reklamy zostaną wstępnie załadowane, nie uda się ich wstępnie załadować lub pamięć podręczna reklam zostanie wyczerpana.
Zdarzenia wstępnego ładowania są przeznaczone do celów analitycznych. W ramach wywołań zwrotnych zdarzenia wstępnego ładowania:
- Nie dzwoń pod numer
preload. - Unikaj wywoływania metody
adWithPreloadID, chyba że reklama ma zostać wyświetlona natychmiast.
Poniższy przykład pokazuje, jak zarejestrować się na 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 ponownie wyświetlać reklam dla identyfikatora wstępnego wczytywania w ramach sesji, możesz zatrzymać wstępne wczytywanie reklam. Aby zatrzymać wstępne wczytywanie reklam dla konkretnego identyfikatora wstępnego wczytywania, wywołaj metodę stopPreloadingAndRemoveAdsForPreloadID z identyfikatorem wstępnego wczytywania. Aby zatrzymać wstępne wczytywanie we wszystkich modułach, wywołaj metodę stopPreloadingAndRemoveAllAds.
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.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: adUnitID)
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID];
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2;
Limity wstępnego buforowania
Google Mobile Ads SDK wymusza limit łącznej liczby wstępnie wczytanych reklam w całej aplikacji we wszystkich jednostkach reklamowych i identyfikatorach wstępnego wczytywania:
- Domyślny limit: Google Mobile Ads SDK przechowuje w pamięci maksymalnie 6 wstępnie załadowanych reklam. Ten limit jest wspólny dla wszystkich formatów i identyfikatorów wstępnego wczytywania.
- Zalecamy zachowanie rozmiaru bufora równego 2 dla każdego identyfikatora wstępnego wczytywania.