Vorabladen von Anzeigen (Beta)

Das Vorabladen von Anzeigen ist eine von Google verwaltete Funktion zum Laden von Anzeigen in Google Mobile Ads SDK, mit der das Laden und Cachen von Anzeigen für Sie verwaltet wird. Für das Vorabladen von Anzeigen ist eine Änderung der Art und Weise erforderlich, 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 Referenzen erst verwalten müssen, wenn Sie bereit sind, sie zu präsentieren.
  • Automatisches Neuladen:Eine neue Anzeige wird automatisch geladen, wenn Sie eine aus dem Cache abrufen.
  • Verwaltete Wiederholungsversuche:Fehlgeschlagene Anfragen werden automatisch mit exponentiellem Backoff wiederholt.
  • Ablauf: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, optimiert Google Mobile Ads SDK die Cache-Reihenfolge, um die beste Anzeige auszuliefern.

In dieser Anleitung wird beschrieben, wie Sie das Vorabladen von Anzeigen konfigurieren, die Verfügbarkeit vorab geladener Anzeigen prüfen und die vorab geladene Anzeige einblenden.

Vorbereitung

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

Vorabladen von Anzeigen starten

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

Im folgenden Beispiel wird das Vorabladen von Anzeigen gestartet:

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

Vorab geladene Anzeige abrufen und einblenden

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

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

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

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 vorab geladener Anzeigen abrufen

Wenn Sie vorab geladene Anzeigenmetadaten abrufen möchten, können Sie das Antwortinformationsobjekt der Anzeige aufrufen. 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 abgerufen:

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 Preloading-Anzeigen prüfen

Wählen Sie eine der folgenden Optionen aus, um die Anzeigenverfügbarkeit zu prüfen:

Verfügbarkeit vorab geladener Anzeigen abrufen

Im folgenden Beispiel wird geprüft, ob Anzeigen verfügbar sind:

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 vorab geladener Anzeigen prüfen

Registrieren Sie sich für Preload-Ereignisse, um benachrichtigt zu werden, wenn Anzeigen erfolgreich vorab geladen werden, das Vorabladen fehlschlägt oder der Anzeigencache erschöpft ist.

Preload-Ereignisse sind für Analysezwecke vorgesehen. Innerhalb von Preload-Ereignis-Callbacks:

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

Im folgenden Beispiel wird die Registrierung für Werbeereignisse durchgeführt:

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 für eine Preload-ID in der Sitzung keine Anzeigen mehr ausliefern müssen, können Sie das Vorabladen von Anzeigen beenden. Wenn Sie das Vorabladen von Anzeigen für eine bestimmte Vorabladungs-ID beenden möchten, rufen Sie stopPreloadingAndRemoveAdsForPreloadID mit einer Vorabladungs-ID auf. Wenn Sie das Vorabladen für alle Preloader beenden möchten, rufen Sie stopPreloadingAndRemoveAllAds auf.

Puffergröße festlegen

Die Puffergröße steuert die Anzahl der vorab geladenen Anzeigen, die im Speicher gehalten werden. Standardmäßig optimiert Google die Puffergröße, um den Arbeitsspeicherverbrauch und die Latenz beim Ausliefern von Anzeigen 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: 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;

Cache-Limits für das Vorladen

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

  • Standardlimit: Google Mobile Ads SDK kann maximal 6 vorgeladene Anzeigen im Arbeitsspeicher halten. Dieses Limit gilt für alle Formate und Preload-IDs.
  • Wir empfehlen, für jede Preload-ID eine Puffergröße von zwei beizubehalten.