Vorabladen von Anzeigen (Beta)

Das Vorabladen von Anzeigen ist eine von Google verwaltete Funktion zum Laden von Anzeigen in Google Mobile Ads SDK, die das Laden und Caching von Anzeigen in Ihrem Namen verwaltet. Für das Vorabladen von Anzeigen muss die Art und Weise geändert werden, wie Sie das Laden von Anzeigen verwalten. Wenn Sie die Leistung durch das Vorabladen von Anzeigen optimieren möchten, deaktivieren Sie das benutzerdefinierte Caching und übertragen Sie diese Aufgabe an Google Mobile Ads SDK.

Das Vorabladen von Anzeigen bietet gegenüber dem manuellen Laden von Anzeigen folgende Vorteile:

  • Referenzverwaltung:Geladene Anzeigen werden gespeichert, sodass Sie keine Referenzen verwalten müssen, bis Sie bereit sind, sie auszuliefern.
  • Automatisches Neuladen:Eine neue Anzeige wird automatisch geladen, wenn Sie eine aus dem Cache abrufen.
  • Verwaltete Wiederholungen:Fehlgeschlagene Anfragen werden automatisch mit exponentiellem Backoff wiederholt.
  • Ablaufbehandlung:Anzeigen werden automatisch aktualisiert, bevor sie ablaufen (in der Regel nach einer Stunde).
  • Cache-Optimierung: Wenn Sie eine Cache-Größe von mehr als 1 verwenden, Google Mobile Ads SDK optimiert die Cache-Reihenfolge, um die beste Anzeige auszuliefern.

In dieser Anleitung wird beschrieben, wie Sie Anzeigen vorab laden, die Verfügbarkeit von vorab geladenen Anzeigen prüfen und die vorab geladene Anzeige ausliefern.

Vorbereitung

Bevor Sie mit dieser Anleitung fortfahren, müssen Sie einrichten Google Mobile Ads SDK.

Vorabladen von Anzeigen starten

Rufen Sie beim Starten der App die Methode preload einmal auf. Nachdem Sie die preload Methode aufgerufen haben, lädt Google Mobile Ads SDK automatisch Anzeigen vorab und wiederholt fehlgeschlagene Anfragen für vorab geladene Konfigurationen.

Im folgenden Beispiel wird das Vorabladen von Anzeigen gestartet:

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];
}

Vorab geladene Anzeigen abrufen und ausliefern

Wenn Sie das Vorabladen von Anzeigen verwenden, werden die im Cache gespeicherten Anzeigen von Google Mobile Ads SDK verwaltet. Wenn Sie eine Anzeige ausliefern möchten, rufen Sie die Methode adWithPreloadID auf. Google Mobile Ads SDK ruft eine verfügbare Anzeige ab und lädt im Hintergrund automatisch die nächste Anzeige vorab.

Rufen Sie die Methode adWithPreloadID erst auf, wenn Sie bereit sind, eine Anzeige auszuliefern. Wenn Anzeigen im Cache gespeichert bleiben, kann Google Mobile Ads SDK abgelaufene Anzeigen automatisch aktualisieren und den Cache optimieren.

Im folgenden Beispiel wird eine vorab geladene Anzeige abgerufen und ausgeliefert:

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];
}

Metadaten von vorab geladenen Anzeigen abrufen

Wenn Sie Metadaten von vorab geladenen Anzeigen abrufen möchten, können Sie das Antwortinformationsobjekt der Anzeige suchen. So können Sie die Metadaten der Anzeige prüfen, ohne sie aus dem Cache zu entfernen.

Im folgenden Beispiel werden die Metadaten einer vorab geladenen Anzeige aus dem Antwortinformationsobjekt gesucht:

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);
  }
}

Verfügbarkeit von vorab geladenen Anzeigen prüfen

Wenn Sie die Verfügbarkeit von Anzeigen prüfen möchten, haben Sie folgende Möglichkeiten:

Verfügbarkeit von vorab geladenen Anzeigen abrufen

Im folgenden Beispiel wird die Verfügbarkeit von Anzeigen geprüft:

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];
}

Verfügbarkeit von vorab geladenen Anzeigen abfragen

Registrieren Sie sich für Vorabladen-Ereignisse, um benachrichtigt zu werden, wenn Anzeigen erfolgreich vorab geladen wurden, das Vorabladen fehlgeschlagen ist oder der Anzeigen-Cache voll ist.

Vorabladen-Ereignisse sind für Analysezwecke vorgesehen. Innerhalb von Rückrufen für Vorabladen-Ereignisse gilt Folgendes:

  • Rufen Sie preload nicht auf.
  • Rufen Sie adWithPreloadID nur auf, wenn die Anzeige sofort ausgeliefert wird.

Im folgenden Beispiel werden Anzeigenereignisse registriert:

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);
}

Vorabladen von Anzeigen beenden

Wenn Sie Anzeigen für eine Vorabladen-ID in der Sitzung nicht mehr ausliefern müssen, können Sie das Vorabladen von Anzeigen beenden. Wenn Sie das Vorabladen von Anzeigen für eine bestimmte Vorabladen-ID beenden möchten, rufen Sie stopPreloadingAndRemoveAdsForPreloadID mit einer Vorabladen-ID auf. Wenn Sie das Vorabladen für alle Vorabladen-IDs beenden möchten, rufen Sie stopPreloadingAndRemoveAllAds auf.

Puffergröße festlegen

Mit der Puffergröße wird die Anzahl der vorab geladenen Anzeigen gesteuert, die im Arbeitsspeicher gespeichert werden. Standardmäßig optimiert Google die Puffergröße, um den Arbeitsspeicherverbrauch und die Latenz bei der Anzeigenauslieferung auszugleichen. Wenn in Ihrer App Anzeigen ausgeliefert werden, bevor die nächste Anzeige geladen wird, können Sie eine benutzerdefinierte Puffergröße festlegen, um die Anzahl der im Arbeitsspeicher gespeicherten Anzeigen zu erhöhen.

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;

Limits für den Vorabladen-Cache

Google Mobile Ads SDK erzwingt ein app-weites Limit für die Gesamtzahl der vorab geladenen Anzeigen für alle Anzeigenblöcke und Vorabladen-IDs:

  • Standardlimit: Google Mobile Ads SDK speichert maximal sechs vorab geladene Anzeigen im Arbeitsspeicher. Dieses Limit gilt für alle Formate und Vorabladen-IDs.
  • Wir empfehlen, eine Puffergröße von zwei oder drei pro Vorabladen-ID beizubehalten.