Wstępne ładowanie reklam (beta)

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 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.