Menggunakan inisialisasi adaptor yang dapat dikonfigurasi (alfa)

Secara default, Google Mobile Ads SDK menginisialisasi semua adaptor mediasi yang terkait dengan aplikasi Anda selama inisialisasi. Menginisialisasi setiap adaptor dapat memerlukan waktu lebih dari 30 detik, sehingga menyebabkan latensi yang signifikan sebelum iklan pertama Anda dapat dimuat.

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:

Prasyarat

  • Mengaktifkan fitur ini dengan menambahkan #import <GoogleMobileAds/GoogleMobileAds_Beta.h> di Objective-C atau menambahkan import GoogleMobileAds_Private di Swift.

    Swift

    import GoogleMobileAds
    import GoogleMobileAds_Private
    

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