Per risolvere questo problema, AdMob fornisce l'inizializzazione configurabile dell'adattatore. Questa funzionalità ti consente di controllare quali adattatori vengono inizializzati per la prima impressione dell'annuncio e riduce la latenza per questa impressione.
Questa guida illustra i seguenti aspetti dell'inizializzazione configurabile dell'adattatore:
- Creare una configurazione dell'adattatore
- Saltare gli adattatori non inizializzati
- Inizializzare gli adattatori rimanenti
Prerequisiti
- Importa Google Mobile Ads SDK 13.4.0 o versioni successive.
- Configura Google Mobile Ads SDK.
Attiva questa funzionalità aggiungendo
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>in Objective-C o aggiungendoimport GoogleMobileAds_Privatein Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Creare una configurazione dell'adattatore
Una configurazione di inizializzazione dell'adattatore indica a Google Mobile Ads SDK di inizializzare solo gli adattatori richiesti. In questo modo, gli adattatori non necessari non bloccano la prima richiesta di annuncio, risparmiando risorse di calcolo e riducendo significativamente la latenza per la prima impressione dell'annuncio.
Per ottimizzare il rendimento della tua app, valuta le seguenti strategie durante la creazione di una configurazione di inizializzazione dell'adattatore:
Dare la priorità a un formato dell'annuncio o a un'unità pubblicitaria specifici
Migliora il rendimento delle app che mostrano un annuncio immediatamente dopo l'avvio, ad esempio un annuncio apertura app, dichiarando il formato dell'annuncio o l'unità pubblicitaria specifici nella configurazione di inizializzazione dell'adattatore.
L'esempio seguente crea una configurazione di inizializzazione dell'adattatore che inizializza solo gli adattatori di mediazione richiesti per un'unità pubblicitaria apertura app specifica con un timeout di cinque secondi:
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;
L'esempio seguente crea una configurazione di inizializzazione dell'adattatore che inizializza solo gli adattatori di mediazione richiesti per tutti gli annunci apertura app e imposta un timeout di cinque secondi:
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;
Inizializzare adattatori di mediazione specifici
Se sai esattamente quali partner di mediazione in genere riempiono la prima impressione dell'annuncio, puoi inizializzare solo l'adattatore specifico fornendo il nome della classe dell'adattatore nella configurazione di inizializzazione dell'adattatore. Combina questa operazione con il salto esplicito degli adattatori non inizializzati e l'impostazione di un timeout per Google Mobile Ads SDK in modo che non attenda gli adattatori non inizializzati rimanenti durante l'asta.
L'esempio seguente crea una configurazione di inizializzazione dell'adattatore che inizializza un adattatore di mediazione specifico e imposta un timeout di cinque secondi:
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;
Escludere adattatori di mediazione specifici
Se noti che determinati adattatori di mediazione hanno una latenza costantemente elevata, puoi escluderli e inizializzarli in un secondo momento.
L'esempio seguente crea una configurazione di inizializzazione dell'adattatore che esclude l'inizializzazione di adattatori specifici e imposta un timeout di cinque secondi:
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;
Saltare gli adattatori non inizializzati
Se prevedi di inizializzare o escludere adattatori di mediazione specifici, puoi configurare la richiesta di annuncio in modo che salti gli adattatori non inizializzati ancora presenti nella sequenza.
Se non crei una configurazione dell'adattatore, puoi comunque configurare la richiesta di annuncio in modo che salti gli adattatori non inizializzati. Google Mobile Ads SDK invia una richiesta di annuncio senza attendere il timeout o l'inizializzazione degli adattatori.
L'esempio seguente inizializza l'SDK con una configurazione di inizializzazione dell'adattatore e crea una richiesta di annuncio apertura app che salta gli adattatori non inizializzati:
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];
}];
}];
Inizializzare gli adattatori rimanenti
Dopo aver caricato le opportunità di annunci sensibili al tempo, inizializza gli adattatori rimanenti per garantire la copertura completa della mediazione dei partner per il resto della sessione dell'app.
L'esempio seguente inizializza il resto degli adattatori fornendo una configurazione vuota:
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.
}];