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 alla tua applicazione durante l'inizializzazione. L'inizializzazione di ogni adattatore può richiedere più di 30 secondi, il che comporta una latenza significativa prima che il primo annuncio possa essere caricato.

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:

Prerequisiti

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

    Swift

    import GoogleMobileAds
    import GoogleMobileAds_Private
    

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