Untuk mengatasi masalah ini, AdMob menyediakan Inisialisasi Adaptor yang Dapat Dikonfigurasi. Fitur ini memungkinkan Anda mengontrol adaptor mana yang diinisialisasi untuk tayangan iklan pertama, dan mengurangi latensi untuk tayangan tersebut.
Panduan ini membahas aspek-aspek berikut dari Inisialisasi Adaptor yang Dapat Dikonfigurasi:
- Membuat konfigurasi adaptor
- Melewati adaptor yang belum diinisialisasi
- Menginisialisasi adaptor yang tersisa
Prasyarat
- Mengimpor Google Mobile Ads SDK 13.4.0 atau yang lebih baru.
- Menyiapkan Google Mobile Ads SDK.
Mengaktifkan fitur ini dengan menambahkan
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>di Objective-C atau menambahkanimport GoogleMobileAds_Privatedi Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Membuat konfigurasi adaptor
Konfigurasi inisialisasi adaptor menginstruksikan Google Mobile Ads SDK untuk hanya menginisialisasi adaptor yang diperlukan. Hal ini mencegah adaptor yang tidak diperlukan memblokir permintaan iklan pertama Anda, menghemat resource komputasi, dan mengurangi latensi secara signifikan untuk tayangan iklan pertama.
Untuk mengoptimalkan performa aplikasi, pertimbangkan strategi berikut saat Anda membuat konfigurasi inisialisasi adaptor:
Memprioritaskan Format Iklan atau Unit Iklan tertentu
Meningkatkan 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 adaptor.
Contoh berikut membuat konfigurasi inisialisasi adaptor yang hanya menginisialisasi adaptor mediasi yang diperlukan untuk unit iklan di layar pembuka aplikasi tertentu dengan waktu tunggu lima detik:
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;
Contoh berikut membuat konfigurasi inisialisasi adaptor yang hanya menginisialisasi adaptor mediasi yang diperlukan untuk semua iklan di layar pembuka aplikasi dan menetapkan waktu tunggu lima detik:
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;
Menginisialisasi adaptor mediasi tertentu
Jika Anda mengetahui dengan pasti partner mediasi mana yang biasanya mengisi tayangan iklan pertama, Anda hanya dapat menginisialisasi adaptor tertentu tersebut dengan memberikan nama class adaptor dalam konfigurasi inisialisasi adaptor. Gabungkan hal ini dengan melewati adaptor yang belum diinisialisasi secara eksplisit dan menetapkan waktu tunggu agar Google Mobile Ads SDK 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:
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;
Mengecualikan adaptor mediasi tertentu
Jika Anda mengamati bahwa adaptor mediasi tertentu memiliki latensi yang konsisten tinggi, Anda dapat mengecualikan adaptor ini dan menginisialisasinya nanti.
Contoh berikut membuat konfigurasi inisialisasi adaptor yang mengecualikan adaptor tertentu dari inisialisasi, dan menetapkan waktu tunggu lima detik:
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;
Melewati adaptor yang belum diinisialisasi
Jika Anda berencana menginisialisasi atau mengecualikan adaptor mediasi tertentu, Anda dapat mengonfigurasi permintaan iklan untuk melewati adaptor yang belum diinisialisasi yang masih ada di waterfall.
Jika Anda tidak membuat konfigurasi adaptor, Anda tetap dapat mengonfigurasi permintaan iklan untuk melewati adaptor yang belum diinisialisasi. Google Mobile Ads SDK mengeluarkan panggilan iklan tanpa menunggu adaptor mencapai waktu habis atau gagal melakukan inisialisasi.
Contoh berikut melakukan inisialisasi SDK dengan konfigurasi inisialisasi adaptor dan membuat panggilan iklan di layar pembuka aplikasi yang melewati adaptor yang belum diinisialisasi:
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];
}];
}];
Menginisialisasi adaptor yang tersisa
Setelah peluang iklan yang sensitif terhadap waktu dimuat, inisialisasi adaptor yang tersisa untuk memastikan cakupan mediasi partner penuh untuk sesi aplikasi lainnya.
Contoh berikut menginisialisasi adaptor lainnya dengan memberikan konfigurasi kosong:
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.
}];