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 konfigurierbaren Adapterinitialisierung behandelt:
- Adapterkonfiguration erstellen
- Nicht initialisierte Adapter überspringen
- Übrige Adapter initialisieren
Vorbereitung
- Importieren Sie Google Mobile Ads SDK 13.4.0 oder höher.
- Richten Sie Google Mobile Ads SDK ein.
Sie können diese Funktion aktivieren, indem Sie
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>in Objective-C oderimport GoogleMobileAds_Privatein Swift hinzufügen.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Adapterkonfiguration erstellen
Eine Adapterinitialisierungskonfiguration weist Google Mobile Ads SDK an, 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 die Leistung Ihrer App optimieren möchten, sollten Sie beim Erstellen einer Adapterinitialisierungskonfiguration die folgenden Strategien berücksichtigen:
Bestimmtes Anzeigenformat oder bestimmten Anzeigenblock priorisieren
Sie können die Leistung von Apps verbessern, in denen sofort nach dem Start eine Anzeige eingeblendet wird, z. B. eine App-Start-Anzeige. Deklarieren Sie dazu das entsprechende Anzeigenformat oder den Anzeigenblock in der Initialisierungskonfiguration des Adapters.
Im folgenden Beispiel wird eine Adapterinitialisierungskonfiguration erstellt, die nur die erforderlichen Vermittlungsadapter für einen bestimmten Anzeigenblock für App-Start-Anzeigen mit einem Zeitlimit von fünf Sekunden initialisiert:
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 füllen, können Sie nur diesen bestimmten Adapter initialisieren, indem Sie den Namen der Adapterklasse in der Initialisierungskonfiguration des Adapters angeben. Kombinieren Sie dies mit dem expliziten Überspringen der nicht initialisierten Adapter und dem Festlegen eines Zeitlimits für Google Mobile Ads SDK, damit während der Auktion nicht auf die verbleibenden nicht initialisierten Adapter gewartet wird.
Im folgenden Beispiel wird eine Adapterinitialisierungskonfiguration erstellt, die einen bestimmten Vermittlungsadapter initialisiert und ein Zeitlimit von fünf Sekunden festlegt:
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 durchgängig eine hohe Latenz aufweisen, können Sie diese Adapter ausschließen und zu einem späteren Zeitpunkt initialisieren.
Im folgenden Beispiel wird eine Adapterinitialisierungskonfiguration 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 Ihrer Vermittlungsabfolge 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 Initialisierung von Adaptern zu warten.
Im folgenden Beispiel wird das SDK mit einer Adapterinitialisierungskonfiguration initialisiert und eine Anzeigenanfrage für eine App-Start-Anzeige 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 die zeitkritischen Anzeigenmöglichkeiten geladen wurden, initialisieren Sie die verbleibenden Adapter, um eine vollständige Abdeckung der 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.
}];