Konfigurierbare Adapterinitialisierung verwenden (Alpha)

Plattform auswählen: Android iOS Android (Legacy)

Standardmäßig initialisiert Google Mobile Ads SDK alle mit Ihrer Anwendung verknüpften Vermittlungsadapter während der Initialisierung. Die Initialisierung aller Adapter kann mehr als 30 Sekunden dauern, was zu einer erheblichen Latenz führt, bevor die erste Anzeige geladen werden kann.

Um dieses Problem zu beheben, bietet AdMob die konfigurierbare Adapterinitialisierung. Mit dieser Funktion können Sie festlegen, welche Adapter für die erste Anzeigenimpression initialisiert werden, und die Latenz für diese Impression reduzieren.

In diesem Leitfaden werden die folgenden Aspekte der Initialisierung des konfigurierbaren Adapters behandelt:

Vorbereitung

  • Aktivieren Sie diese Funktion, indem Sie #import <GoogleMobileAds/GoogleMobileAds_Beta.h> in Objective-C oder import GoogleMobileAds_Private in Swift hinzufügen.

    Swift

    import GoogleMobileAds
    import GoogleMobileAds_Private
    

    Objective-C

    #import <GoogleMobileAds/GoogleMobileAds.h>
    #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
    

Adapterkonfiguration erstellen

Mit einer Adapterinitialisierungskonfiguration wird Google Mobile Ads SDK angewiesen, nur die erforderlichen Adapter zu initialisieren. So wird verhindert, dass unnötige Adapter die erste Anzeigenanfrage blockieren. Das spart Rechenressourcen und reduziert die Latenz für die erste Anzeigenimpression erheblich.

Wenn Sie eine Konfiguration für die Adapterinitialisierung erstellen, sollten Sie die folgenden Strategien berücksichtigen, um die Leistung Ihrer App zu optimieren:

Bestimmte Anzeigenformate oder Anzeigenblöcke priorisieren

Sie können die Leistung von Apps, in denen sofort nach dem Start eine Anzeige ausgeliefert wird, z. B. eine App-Start-Anzeige, verbessern, indem Sie das spezifische Anzeigenformat oder den Anzeigenblock in der Initialisierungskonfiguration Ihres Adapters deklarieren.

Im folgenden Beispiel wird eine Konfiguration für die Adapterinitialisierung erstellt, mit der nur die erforderlichen Vermittlungsadapter für einen bestimmten Anzeigenblock für App-Start-Anzeigen mit einem Zeitlimit von fünf Sekunden initialisiert werden:

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;

Im folgenden Beispiel wird eine Adapterinitialisierungskonfiguration erstellt, die nur die erforderlichen Vermittlungsadapter für alle App-Start-Anzeigen initialisiert und ein Zeitlimit von fünf Sekunden festlegt:

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;

Bestimmte Vermittlungsadapter initialisieren

Wenn Sie genau wissen, welche Vermittlungspartner normalerweise Ihre erste Anzeigenimpression ausliefern, können Sie nur diesen bestimmten Adapter initialisieren. Geben Sie dazu den Namen der Adapterklasse in der Konfiguration für die Adapterinitialisierung an. Kombinieren Sie dies mit dem expliziten Überspringen der nicht initialisierten Adapter und legen Sie ein Zeitlimit für Google Mobile Ads SDK fest, damit während der Auktion nicht auf die verbleibenden nicht initialisierten Adapter gewartet wird.

Im folgenden Beispiel wird eine Adapterinitialisierungskonfiguration erstellt, mit der ein bestimmter Vermittlungsadapter initialisiert und ein Zeitlimit von fünf Sekunden festgelegt wird:

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;

Bestimmte Vermittlungsadapter ausschließen

Wenn Sie feststellen, dass bestimmte Vermittlungsadapter eine konstant hohe Latenz aufweisen, können Sie diese Adapter ausschließen und zu einem späteren Zeitpunkt initialisieren.

Im folgenden Beispiel wird eine Konfiguration für die Adapterinitialisierung erstellt, die bestimmte Adapter von der Initialisierung ausschließt und ein Zeitlimit von fünf Sekunden festlegt:

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;

Nicht initialisierte Adapter überspringen

Wenn Sie bestimmte Vermittlungsadapter initialisieren oder ausschließen möchten, können Sie Ihre Anzeigenanfrage so konfigurieren, dass nicht initialisierte Adapter, die noch in Ihrem Wasserfall vorhanden sind, übersprungen werden.

Wenn Sie keine Adapterkonfiguration erstellen, können Sie Ihre Anzeigenanfrage trotzdem so konfigurieren, dass nicht initialisierte Adapter übersprungen werden. Google Mobile Ads SDK sendet eine Anzeigenanfrage, ohne auf das Zeitlimit oder die fehlgeschlagene Initialisierung von Adaptern zu warten.

Im folgenden Beispiel wird das SDK mit einer Adapterinitialisierungskonfiguration initialisiert und eine App-Start-Anzeigenanfrage erstellt, bei der nicht initialisierte Adapter übersprungen werden:

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

Verbleibende Adapter initialisieren

Nachdem Ihre zeitkritischen Anzeigenmöglichkeiten geladen wurden, initialisieren Sie die verbleibenden Adapter, um die vollständige Partnervermittlung für den Rest der App-Sitzung zu gewährleisten.

Im folgenden Beispiel werden die restlichen Adapter mit einer leeren Konfiguration initialisiert:

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