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 GMA Next-Gen SDK v0.25.0-beta01 oder höher.
- Richten Sie GMA Next-Gen SDK ein.
Sie können diese Funktion aktivieren, indem Sie die Annotation
@ExperimentalApizu Ihrer Klasse hinzufügen:Kotlin
@OptIn(ExperimentalApi::class)Java
import androidx.annotation.OptIn; // ... @OptIn(markerClass = ExperimentalApi.class)
Adapterkonfiguration erstellen
Eine Adapterinitialisierungskonfiguration weist GMA Next-Gen 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:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdUnitIds(setOf(AD_UNIT_ID))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdUnitIds(Set.of(AD_UNIT_ID))
.setInitializationTimeoutMs(5000)
.build();
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:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdFormats(setOf(AdFormat.APP_OPEN_AD))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdFormats(Set.of(AdFormat.APP_OPEN_AD))
.setInitializationTimeoutMs(5000)
.build();
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 GMA Next-Gen 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:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build();
Sie können die Namen der Adapterklassen programmatisch abrufen. Im folgenden Beispiel werden Adapterklassennamen programmatisch abgerufen:
Kotlin
ExampleMediationAdapter::class.java.name
Java
ExampleMediationAdapter.class.getName()
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:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setExcludedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setExcludedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build();
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. GMA Next-Gen 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:
Kotlin
val initConfig =
InitializationConfig.Builder(appId)
.setAdapterInitializationConfig(adapterInitializationConfig)
.build()
// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
MobileAds.initialize(context = context, initConfig) {
// Make your ad request after adapter initialization completes.
AppOpenAd.load(
AdRequest.Builder(adUnitId = adUnitId)
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
.skipUninitializedAdapters()
.build(),
adLoadCallback =
object : AdLoadCallback<AppOpenAd> {
override fun onAdLoaded(ad: AppOpenAd) {
// TODO: Your ad logic here
// ....
// Execute non-time-sensitive tasks after ad load completes.
performPostLaunchSetup()
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// TODO: Handle load error.
// ....
// Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
performPostLaunchSetup()
}
},
)
}
}
Java
InitializationConfig initConfig =
new InitializationConfig.Builder(appId)
.setAdapterInitializationConfig(adapterInitializationConfig)
.build();
// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
MobileAds.initialize(
context,
initConfig,
initializationStatus -> {
// Make your ad request after adapter initialization completes.
AppOpenAd.load(
new AdRequest.Builder(adUnitId)
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
.skipUninitializedAdapters()
.build(),
new AdLoadCallback<AppOpenAd>() {
@Override
public void onAdLoaded(@NonNull AppOpenAd ad) {
// TODO: Your ad logic here
// ....
// Execute non-time-sensitive tasks after ad load completes.
performPostLaunchSetup();
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError error) {
// TODO: Handle load error.
// ....
// Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
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:
Kotlin
// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(AdapterInitializationConfig.Builder().build())
Java
// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(new AdapterInitializationConfig.Builder().build());