Untuk mengatasi masalah ini, AdMob menyediakan Inisialisasi Adaptor yang Dapat Dikonfigurasi. Fitur ini memungkinkan Anda mengontrol adapter mana yang diinisialisasi untuk tayangan iklan pertama, dan mengurangi latensi untuk tayangan iklan tersebut.
Panduan ini mencakup aspek-aspek berikut dari Inisialisasi Adaptor yang Dapat Dikonfigurasi:
- Membuat konfigurasi adaptor
- Lewati adaptor yang tidak diinisialisasi
- Lakukan inisialisasi adaptor yang tersisa
Prasyarat
- Impor GMA Next-Gen SDK v0.25.0-beta01 atau yang lebih tinggi.
- Siapkan GMA Next-Gen SDK.
Pilih untuk menggunakan fitur ini dengan menambahkan anotasi
@ExperimentalApike class Anda:Kotlin
@OptIn(ExperimentalApi::class)Java
import androidx.annotation.OptIn; // ... @OptIn(markerClass = ExperimentalApi.class)
Membuat konfigurasi adaptor
Konfigurasi inisialisasi adaptor menginstruksikan GMA Next-Gen SDK untuk menginisialisasi hanya adaptor yang diperlukan. Hal ini mencegah adapter yang tidak perlu memblokir panggilan iklan pertama Anda, menghemat sumber daya komputasi, dan secara signifikan mengurangi latensi untuk tayangan iklan pertama.
Untuk mengoptimalkan performa aplikasi, pertimbangkan strategi berikut saat Anda membuat konfigurasi inisialisasi adaptor:
Memprioritaskan Format Iklan atau Unit Iklan tertentu
Tingkatkan performa aplikasi yang menampilkan iklan segera setelah diluncurkan, seperti iklan di layar pembuka aplikasi, dengan mendeklarasikan format iklan atau unit iklan tertentu dalam konfigurasi inisialisasi adapter Anda.
Contoh berikut membuat konfigurasi inisialisasi adapter yang hanya menginisialisasi adapter mediasi yang diperlukan untuk unit iklan di layar pembuka aplikasi tertentu dengan waktu tunggu lima detik:
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();
Contoh berikut membuat konfigurasi inisialisasi adapter yang hanya menginisialisasi adapter mediasi yang diperlukan untuk semua Iklan Buka Aplikasi dan menetapkan waktu tunggu lima detik:
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();
Melakukan inisialisasi adaptor mediasi tertentu
Jika Anda tahu persis partner mediasi mana yang biasanya mengisi tayangan iklan pertama Anda, Anda dapat melakukan inisialisasi hanya adapter tertentu tersebut dengan memberikan nama class adapter dalam konfigurasi inisialisasi adapter Anda. Gabungkan hal ini dengan melewati adaptor yang belum diinisialisasi secara eksplisit dan menetapkan waktu tunggu untuk GMA Next-Gen SDK agar tidak menunggu adaptor yang belum diinisialisasi selama lelang.
Contoh berikut membuat konfigurasi inisialisasi adaptor yang menginisialisasi adaptor mediasi tertentu dan menetapkan waktu tunggu lima detik:
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();
Anda dapat mengambil nama class adaptor secara terprogram. Contoh berikut mengambil nama class adaptor secara terprogram:
Kotlin
ExampleMediationAdapter::class.java.name
Java
ExampleMediationAdapter.class.getName()
Mengecualikan adaptor mediasi tertentu
Jika mengamati bahwa adaptor mediasi tertentu memiliki latensi yang tinggi secara konsisten, Anda dapat mengecualikan adaptor ini dan menginisialisasinya di lain waktu.
Contoh berikut membuat konfigurasi inisialisasi adaptor yang mengecualikan adaptor tertentu dari inisialisasi, dan menetapkan waktu tunggu lima detik:
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();
Melewati adaptor yang belum diinisialisasi
Jika Anda berencana untuk menginisialisasi atau mengecualikan adapter mediasi tertentu, Anda dapat mengonfigurasi permintaan iklan untuk melewati adapter yang belum diinisialisasi yang masih ada dalam waterfall.
Jika Anda tidak membuat konfigurasi adaptor, Anda tetap dapat mengonfigurasi permintaan iklan untuk melewati adaptor yang belum diinisialisasi. GMA Next-Gen SDK mengeluarkan permintaan iklan tanpa menunggu adaptor kehabisan waktu atau gagal melakukan inisialisasi.
Contoh berikut melakukan inisialisasi SDK dengan konfigurasi inisialisasi adapter dan membuat panggilan iklan di layar pembuka aplikasi yang melewati adapter yang belum diinisialisasi:
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();
}
});
});
Lakukan inisialisasi adaptor yang tersisa
Setelah peluang iklan yang mendesak dimuat, lakukan inisialisasi adapter yang tersisa untuk memastikan cakupan mediasi partner penuh selama sesi aplikasi lainnya.
Contoh berikut menginisialisasi adapter lainnya dengan memberikan konfigurasi kosong:
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());