Para resolver este problema, AdMob proporciona la Configurable Adapter Initialization. Esta función te permite controlar qué adaptadores se inicializan para tu primera impresión de anuncio y reduce la latencia de esa impresión.
En esta guía, se abarcan los siguientes aspectos de la Configurable Adapter Initialization:
- Creación de una configuración del adaptador
- Omisión de adaptadores no inicializados
- Inicialización de los adaptadores restantes
Requisitos previos
- Haber importado la versión 13.4.0 o una superior de Google Mobile Ads SDK
- Haber configurado el Google Mobile Ads SDK
Para habilitar esta función, agrega
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>en Objective-C oimport GoogleMobileAds_Privateen Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Creación de una configuración del adaptador
Una configuración de inicialización del adaptador le indica a Google Mobile Ads SDK que inicialice solo los adaptadores necesarios. Esto evita que los adaptadores innecesarios bloqueen tu primera solicitud de anuncio, lo que conserva los recursos de procesamiento y reduce significativamente la latencia de la primera impresión del anuncio.
Para optimizar el rendimiento de tu app, considera las siguientes estrategias cuando crees una configuración de inicialización del adaptador:
Prioriza un formato de anuncio o una unidad de anuncios específicos
Mejora el rendimiento de las apps que muestran un anuncio inmediatamente después del lanzamiento, como un anuncio para inicio de app, declarando el formato del anuncio o la unidad de anuncios específicos en la configuración de inicialización de tu adaptador.
En el siguiente ejemplo, se crea una configuración de inicialización del adaptador que inicializa solo los adaptadores de mediación requeridos para una unidad de anuncios para inicio de app específica con un tiempo de espera de cinco segundos:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdUnitIDs = [adUnitID]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdUnitIDs = [NSSet setWithArray:@[ kTestAdUnitID ]];
adapterConfig.initializationTimeout = 5.0;
En el siguiente ejemplo, se crea una configuración de inicialización del adaptador que inicializa solo los adaptadores de mediación necesarios para todos los anuncios para inicio de app y establece un tiempo de espera de cinco segundos:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdFormats = [AdFormat.appOpen.rawValue as NSNumber]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdFormats = [NSSet setWithArray:@[ @(GADAdFormatAppOpen) ]];
adapterConfig.initializationTimeout = 5.0;
Inicializa adaptadores de mediación específicos
Si sabes exactamente qué socios de mediación suelen completar tu primera impresión de anuncio, puedes inicializar solo ese adaptador específico proporcionando el nombre de la clase del adaptador en la configuración de inicialización del adaptador. Combina esto con la omisión explícita de los adaptadores no inicializados y un tiempo de espera establecido para que Google Mobile Ads SDK no espere a los adaptadores no inicializados restantes durante la subasta.
En el siguiente ejemplo, se crea una configuración de inicialización del adaptador que inicializa un adaptador de mediación específico y establece un tiempo de espera de cinco segundos:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdapterClasses = [adapterClassName]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdapterClasses = [NSSet setWithArray:@[ kTestAdapterClassName ]];
adapterConfig.initializationTimeout = 5.0;
Excluye adaptadores de mediación específicos
Si observas que ciertos adaptadores de mediación tienen una latencia constantemente alta, puedes excluirlos e inicializarlos más adelante.
En el siguiente ejemplo, se crea una configuración de inicialización del adaptador que excluye la inicialización de adaptadores específicos y establece un tiempo de espera de cinco segundos:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.excludedAdapterClasses = [adapterClassName]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.excludedAdapterClasses = [NSSet setWithArray:@[ kTestAdapterClassName ]];
adapterConfig.initializationTimeout = 5.0;
Omisión de adaptadores no inicializados
Si planeas inicializar o excluir adaptadores de mediación específicos, puedes configurar tu solicitud de anuncio para que omita los adaptadores no inicializados que aún estén presentes en tu cascada.
Si no creas una configuración del adaptador, aún puedes configurar tu solicitud de anuncio para omitir los adaptadores no inicializados. Google Mobile Ads SDK emite una solicitud de anuncio sin esperar a que se agote el tiempo de espera de los adaptadores o a que no se inicialicen.
En el siguiente ejemplo, se inicializa el SDK con una configuración de inicialización del adaptador y se crea una solicitud de anuncio para inicio de app que omite los adaptadores no inicializados:
Swift
await MobileAds.shared.start(with: adapterInitializationConfig)
// Make your ad request after adapter initialization completes.
let request = Request()
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
request.skipUninitializedAdapters = true
do {
let _ = try await AppOpenAd.load(with: adUnitID, request: request)
} catch {
print("Failed to load app open ad with error: \(error.localizedDescription)")
// TODO: Handle error
}
// Handle non time-sensitive tasks after the ad has loaded regardless of whether ad load
// succeeded.
performPostLaunchSetup()
Objective-C
[[GADMobileAds sharedInstance]
startWithMediationInitializationConfiguration:adapterInitializationConfig
completionHandler:^(GADInitializationStatus *_Nonnull status) {
// Make your ad request after adapter initialization
// completes.
GADRequest *request = [GADRequest request];
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters
request.shouldSkipUninitializedAdapters = YES;
[GADAppOpenAd
loadWithAdUnitID:adUnitID
request:request
completionHandler:^(GADAppOpenAd *_Nullable ad,
NSError *_Nullable error) {
if (error) {
NSLog(@"Failed to load app open ad with error: %@",
error.localizedDescription);
}
// Handle non time-sensitive tasks after the
// ad has loaded regardless of whether ad load succeeded.
[self performPostLaunchSetup];
}];
}];
Inicialización de los adaptadores restantes
Después de que se carguen las oportunidades de anuncios urgentes, inicializa los adaptadores restantes para garantizar la cobertura completa de la mediación de socios durante el resto de la sesión de la app.
En el siguiente ejemplo, se inicializan el resto de los adaptadores proporcionando una configuración vacía:
Swift
// Provide start with nil to initialize any adapters
// not initialized with configurable initialization.
MobileAds.shared.start(with: nil) { status in
// Remaining adapters are now initialized.
}
Objective-C
// Call start with nil to initialize any adapters not initialized via configurable initialization.
[[GADMobileAds sharedInstance]
startWithMediationInitializationConfiguration:nil
completionHandler:^(GADInitializationStatus *_Nonnull status) {
// Remaining adapters are now initialized.
}];