Per risolvere il problema, AdMob fornisce l'inizializzazione dell'adattatore configurabile. 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 dell'adattatore configurabile:
- Creare una configurazione dell'adattatore
- Salta 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 oimport GoogleMobileAds_Privatein Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Crea una configurazione dell'adattatore
Una configurazione di inizializzazione degli adattatori indica a Google Mobile Ads SDK di inizializzare solo gli adattatori richiesti. In questo modo si impedisce agli adattatori non necessari di bloccare 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 all'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;
Inizializza 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 impostazione con l'omissione esplicita degli adattatori non inizializzati e l'impostazione di un timeout per Google Mobile Ads SDK per non attendere gli altri adattatori non inizializzati 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;
Escludi 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;
Salta gli adattatori non inizializzati
Se prevedi di inizializzare o escludere adattatori di mediazione specifici, puoi configurare la richiesta di annuncio in modo da saltare gli adattatori non inizializzati ancora presenti nella cascata.
Se non crei una configurazione dell'adattatore, puoi comunque configurare la richiesta di annuncio in modo da ignorare 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 ignora 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];
}];
}];
Inizializza gli adattatori rimanenti
Dopo aver caricato le opportunità pubblicitarie sensibili al fattore 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.
}];