La precarga de anuncios es una función de carga de anuncios administrada por Google en Google Mobile Ads SDK que administra la carga y el almacenamiento en caché de anuncios en tu nombre. La precarga de anuncios requiere un cambio en la forma en que administras la carga de anuncios. Para optimizar el rendimiento con la precarga de anuncios, inhabilita el almacenamiento en caché personalizado y delega esa responsabilidad en Google Mobile Ads SDK.
La precarga de anuncios ofrece los siguientes beneficios en comparación con la carga manual de anuncios:
- Administración de referencias: Mantiene los anuncios cargados para que no tengas que mantener referencias hasta que estén listos para mostrarse.
- Recarga automática: Carga automáticamente un anuncio nuevo cuando sacas uno de la caché.
- Reintentos administrados: Vuelve a intentar automáticamente las solicitudes fallidas con una retirada exponencial.
- Control de vencimiento: Actualiza automáticamente los anuncios antes de que venzan (por lo general, después de una hora).
- Optimización del caché: Si usas un tamaño de caché superior a uno, Google Mobile Ads SDK optimiza el orden del caché para publicar el mejor anuncio.
En esta guía, se explica cómo configurar los anuncios para la precarga, verificar su disponibilidad y mostrar los anuncios precargados.
Requisitos previos
Antes de continuar con el instructivo, tienes que completar las siguientes tareas:
- Instala la versión 13.3.0 o una posterior del Google Mobile Ads SDK. Los recursos para desarrolladores de versiones anteriores están disponibles en 11.12.0 a 12.2.0, pero te recomendamos que uses la versión 13.3.0 o una posterior, y que sigas esta guía en el futuro.
- Configura Google Mobile Ads SDK.
- [Opcional] Descarga y ejecuta la app de ejemplo de precarga de anuncios.
Importa los encabezados de la versión beta
Para usar la carga previa de anuncios, importa los encabezados beta:
Swift
import GoogleMobileAds_Private
Objective-C
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Comienza a precargar los anuncios
Para comenzar a precargar anuncios, llama a preload(). Llama a este método solo una vez por ID de carga previa. Te recomendamos que llames al método cuando comience la sesión de la app. Después de llamar a preload(), Google Mobile Ads SDK precarga automáticamente los anuncios y reintenta las solicitudes fallidas para esos IDs de precarga.
En el siguiente ejemplo, se inicia la precarga de anuncios:
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:(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];
}
Obtén y muestra el anuncio precargado
Cuando se usa la precarga de anuncios, Google Mobile Ads SDK contiene anuncios almacenados en caché.
Cuando quieras mostrar un anuncio, llama a adWithPreloadID().
Google Mobile Ads SDK recupera el anuncio disponible y precarga automáticamente el siguiente anuncio en segundo plano.
En el siguiente ejemplo, se recupera y muestra un anuncio precargado:
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 load 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:(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];
}
Obtén metadatos de anuncios precargados
Para obtener los metadatos de los anuncios precargados, puedes buscar el objeto de información de respuesta del anuncio. Este proceso te permite inspeccionar los metadatos del anuncio sin quitarlo de la caché.
En el siguiente ejemplo, se buscan los metadatos de un anuncio precargado en el objeto info de la respuesta:
Swift
private func getInterstitialAdResponseInfo(preloadID: String) {
// Get the response info for the preloaded ad.
if let responseInfo = InterstitialAdPreloader.shared.adResponseInfo(withPreloadID: preloadID) {
print("Ad response ID: \(responseInfo.responseID)")
}
}
Objective-C
- (void)getInterstitialAdResponseInfoWithPreloadID:(NSString *)preloadID {
// Get the response info for the preloaded ad.
GADResponseInfo *responseInfo =
[GADInterstitialAdPreloader.sharedInstance
adResponseInfoWithPreloadID:preloadID];
if (responseInfo) {
NSLog(@"Ad response ID: %@", responseInfo.responseID);
}
}
Verifica la disponibilidad de anuncios precargados
Para verificar la disponibilidad de anuncios, elige una de las siguientes opciones:
Obtén la disponibilidad de anuncios precargados
En el siguiente ejemplo, se verifica la disponibilidad de anuncios:
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:(NSString *)adUnitID {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}
Cómo escuchar la disponibilidad de anuncios precargados
Regístrate para recibir notificaciones sobre los eventos de precarga cuando los anuncios se precarguen correctamente, no se precarguen o se agote la caché de anuncios.
Los eventos de carga previa están diseñados para fines de análisis. Dentro de las devoluciones de llamada del evento de precarga:
- No llames a
preload(). - Evita llamar a
adWithPreloadID(), a menos que el anuncio se muestre de inmediato.
En el siguiente ejemplo, se registra para recibir eventos de anuncios:
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.
// [Important] Don't call AdPreloader.shared.preload or AdPreloader.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.
// [Important] 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);
}
Detén la precarga de los anuncios
Si no necesitas volver a mostrar anuncios para un ID de carga previa en la sesión, puedes detener la carga previa de anuncios. Para detener la precarga de anuncios para un ID de precarga específico, llama a stopPreloadingAndRemoveAdsForPreloadID() con un ID de precarga. Para detener la precarga de todos los precargadores, llama a stopPreloadingAndRemoveAllAds().
Configura el tamaño del búfer
El tamaño del búfer controla la cantidad de anuncios precargados que se almacenan en la memoria. De forma predeterminada, Google optimiza el tamaño del búfer para equilibrar el consumo de memoria y la latencia de publicación de anuncios. Si tu app muestra anuncios antes de que se cargue el siguiente, puedes establecer un tamaño de búfer personalizado para aumentar la cantidad de anuncios que se mantienen en la memoria. Recomendamos un tamaño de búfer de dos o tres.
Límites de caché de carga previa
Google Mobile Ads SDK aplica un límite en toda la app para la cantidad total de anuncios precargados en todas las unidades de anuncios y los IDs de precarga:
- Límite predeterminado: Google Mobile Ads SDK almacena un máximo de seis anuncios precargados en la memoria. Este límite se comparte entre todos los formatos y los IDs de carga previa.
- Te recomendamos que mantengas un tamaño de búfer de dos o tres por ID de carga previa.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: "/21775744923/example/rewarded")
preloadConfig.bufferSize = 3
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"/21775744923/example/rewarded"];
preloadConfig.bufferSize = 3;