Utilizzare l'inizializzazione configurabile dell'adattatore (alpha)

Seleziona la piattaforma: Android iOS Android (Legacy)

Per impostazione predefinita, Google Mobile Ads SDK inizializza tutti gli adattatori di mediazione associati a lla tua applicazione durante l'inizializzazione. L'inizializzazione di ogni adattatore può richiedere più di 30 secondi, con conseguente latenza significativa prima che il primo annuncio possa essere caricato.

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:

Prerequisiti

  • Attiva questa funzionalità aggiungendo #import <GoogleMobileAds/GoogleMobileAds_Beta.h> in Objective-C o aggiungendo import GoogleMobileAds_Private in Swift.

    Swift

    import GoogleMobileAds
    import GoogleMobileAds_Private
    

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