Usa la inicialización del adaptador configurable (alfa)

Selecciona la plataforma: Android Novedad Android iOS

De forma predeterminada, Google Mobile Ads SDK inicializa todos los adaptadores de mediación asociados con tu aplicación durante la inicialización. Este proceso puede demorar más de 30 segundos, lo que genera una latencia significativa antes de que se pueda cargar tu primer anuncio.

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:

Requisitos previos

  • Para habilitar esta función, agrega #import <GoogleMobileAds/GoogleMobileAds_Beta.h> en Objective-C o import GoogleMobileAds_Private en Swift.

    Swift

    import GoogleMobileAds
    import GoogleMobileAds_Private
    

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