Para resolver esse problema, a AdMob oferece a inicialização configurável do adaptador. Com esse recurso, você controla quais adaptadores são inicializados para a primeira impressão de anúncio e reduz a latência dessa impressão.
Este guia aborda os seguintes aspectos da inicialização configurável do adaptador:
- Criar uma configuração de adaptador
- Ignorar adaptadores não inicializados
- Inicializar os adaptadores restantes
Pré-requisitos
- Importe o Google Mobile Ads SDK 13.4.0 ou versões mais recentes.
- Configure o Google Mobile Ads SDK.
Para ativar esse recurso, adicione
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>em Objective-C ouimport GoogleMobileAds_Privateem Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Criar uma configuração de adaptador
Uma configuração de inicialização do adaptador instrui o Google Mobile Ads SDK a inicializar apenas os adaptadores necessários. Isso evita que adaptadores desnecessários bloqueiem sua primeira solicitação de anúncio, conservando recursos de computação e reduzindo significativamente a latência da primeira impressão de anúncio.
Para otimizar o desempenho do app, considere as seguintes estratégias ao criar uma configuração de inicialização do adaptador:
Priorizar um formato de anúncio ou bloco de anúncios específico
Melhore a performance de apps que mostram um anúncio imediatamente após a inicialização, como um anúncio de abertura do app, declarando o formato ou bloco de anúncios específico na configuração de inicialização do adaptador.
O exemplo a seguir cria uma configuração de inicialização do adaptador que inicializa apenas os adaptadores de mediação necessários para um bloco de anúncios de abertura do app específico com um tempo limite 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;
O exemplo a seguir cria uma configuração de inicialização do adaptador que inicializa apenas os adaptadores de mediação necessários para todos os anúncios de tela cheia e define um tempo limite 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;
Inicializar adaptadores de mediação específicos
Se você souber exatamente quais parceiros de mediação normalmente preenchem sua primeira impressão de anúncio, inicialize apenas esse adaptador específico fornecendo o nome da classe do adaptador na configuração de inicialização. Combine isso com o pulo explícito dos adaptadores não inicializados e defina um tempo limite para Google Mobile Ads SDK para não esperar pelos adaptadores não inicializados restantes durante o leilão.
O exemplo a seguir cria uma configuração de inicialização do adaptador que inicializa um adaptador de mediação específico e define um tempo limite 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;
Excluir adaptadores de mediação específicos
Se você notar que determinados adaptadores de mediação têm uma latência consistentemente alta, exclua esses adaptadores e inicialize-os mais tarde.
O exemplo a seguir cria uma configuração de inicialização do adaptador que impede a inicialização de adaptadores específicos e define um tempo limite 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;
Ignorar adaptadores não inicializados
Se você planeja inicializar ou excluir adaptadores de mediação específicos, configure sua solicitação de anúncio para ignorar adaptadores não inicializados que ainda estão presentes na hierarquia.
Se você não criar uma configuração de adaptador, ainda poderá configurar sua solicitação de anúncio para ignorar adaptadores não inicializados. Google Mobile Ads SDK emite uma solicitação de anúncio sem esperar que os adaptadores atinjam o tempo limite ou não sejam inicializados.
O exemplo a seguir inicializa o SDK com uma configuração de inicialização do adaptador e cria uma solicitação de anúncio de abertura do app que ignora adaptadores não 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];
}];
}];
Inicializar os adaptadores restantes
Depois que as oportunidades de anúncios sensíveis ao tempo forem carregadas, inicialize os adaptadores restantes para garantir a cobertura total da mediação de parceiros durante o restante da sessão do app.
O exemplo a seguir inicializa o restante dos adaptadores fornecendo uma configuração vazia:
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.
}];