Migrasi SDK

Halaman ini mencakup migrasi untuk versi saat ini dan sebelumnya.

Bermigrasi ke SDK v21

Untuk menghindari potensi kegagalan build dengan Google Mobile Ads SDK versi 21.0.0 (dijadwalkan untuk rilis awal 2022), ikuti pemeriksaan dan panduan yang diperkenalkan dalam panduan ini.

Perbarui minSdkVersion ke 19 atau lebih tinggi

Mulai dari versi 21.0.0, SDK Iklan Seluler Google mengharuskan semua aplikasi untuk menjalankan Android API level 19 minimum. Untuk menyesuaikan level API, ubah nilai minSdkVersion di file build aplikasi Anda menjadi 19 atau lebih tinggi.

Terapkan nullability yang ketat

Sebagai persiapan untuk menerapkan nullability yang ketat, anotasi @NonNull ditambahkan di semua API yang sebelumnya tidak secara eksplisit mendefinisikan nullability.

Perubahan ini dapat merusak aplikasi Kotlin dan aplikasi yang menggunakan kerangka kerja pemeriksaan nol Java jika ada pelanggaran keamanan nol dan sebelumnya tidak menangani nilai null dengan cara yang aman (lihat dokumentasi Kotlin di Null-safety ).

Penghapusan metode addNetworkExtras()

Metode addNetworkExtras() yang meneruskan parameter tambahan sebagai instance NetworkExtras ke adaptor jaringan iklan tertentu tidak digunakan lagi di SDK versi 20.3.0, dan akan dihapus di versi 21.0.0. Gunakan metode addNetworkExtrasBundle() dari kelas AdRequest.Builder yang sama.

Penghapusan metode lokasi

Metode lokasi berikut akan dihapus di versi 21.0.0:

  • Metode setLocation(Location location) di kelas AdRequest.Builder yang menetapkan lokasi pengguna untuk tujuan penargetan mediasi.
  • Metode getLocation() di kelas AdRequest yang mengembalikan informasi penargetan lokasi pengguna yang sebelumnya diteruskan ke metode setLocation(Location location) .
  • Metode getLocation() di kelas MediationAdConfiguration yang mengembalikan lokasi pengguna, jika ditentukan oleh AdRequest .

Data lokasi tidak digunakan oleh Google untuk menargetkan iklan. Anda harus menggunakan API pihak ketiga untuk memberikan informasi ke jaringan iklan pihak ketiga jika diperlukan.

Penghentian antarmuka acara khusus

Peristiwa khusus memungkinkan penayang yang menggunakan mediasi AdMobuntuk menambahkan mediasi waterfall untuk jaringan iklan yang bukan salah satu jaringan iklan yang didukungAdMob.

Semua antarmuka peristiwa khusus tidak digunakan lagi dan digantikan oleh kelas Adapter dan antarmuka MediationAdLoadCallback .

Tabel di bawah mencantumkan kelas atau antarmuka terkait yang harus digunakan untuk setiap antarmuka peristiwa khusus mulai dari versi 21.0.0:

v20.0.0 Antarmuka v21.0.0 Kelas/Antarmuka
Acara Khusus Adaptor
Spanduk Acara Khusus
InterstisialAcara Khusus
Acara KustomNative
CustomEventBannerListener Adaptor , MediationAdLoadCallback
CustomEventInterstitialListener
Pendengar Acara Kustom
CustomEventNativeListener

Bermigrasi ke SDK v20

Ada banyak perubahan besar yang terjadi di versi 20.0.0. Versi 19.7.0 memperkenalkan banyak API baru, dan menghentikan atau mengganti nama banyak kelas dalam persiapan untuk versi 20.0.0. Panduan ini menyoroti perubahan besar yang dibawa dalam versi 19.7.0 serta apa yang akan datang untuk versi 20.0.0 (awal 2021).

Pembaruan API format layar penuh

Dimulai dengan versi 20.0.0, format iklan interstisial, reward, interstisial reward, dan App Open distandarisasi untuk mengikuti desain API yang konsisten.

Semua API format layar penuh menggunakan prinsip-prinsip berikut:

  • Metode beban statis
  • Mekanisme panggilan balik atau penangan beban yang serupa
  • Ketergantungan pada kelas FullScreenContentCallback untuk panggilan balik presentasi

Penghapusan RewardedVideoAd API lawas

RewardedAd API yang lebih baru pertama kali diperkenalkan pada bulan Maret 2019 dan telah menjadi API reward pilihan selama lebih dari 18 bulan. Ini memiliki lebih banyak penyempurnaan dibandingkan dengan RewardedVideoAd API lawas, termasuk kemampuan untuk memuat lebih dari satu iklan reward dalam satu waktu.

RewardedVideoAd API lawas dihapus di SDK versi 20.0.0.

Penghentian spanduk pintar demi spanduk adaptif

Iklan spanduk pintar tidak digunakan lagi dan digantikan dengan iklan spanduk adaptif . Spanduk adaptif memberikan kinerja yang unggul dan lebih banyak fleksibilitas dalam menyetel lebar iklan. Jika Anda lebih memilih untuk terus menggunakan spanduk lebar penuh, itu masih dapat dilakukan menggunakan spanduk adaptif, seperti yang ditunjukkan dalam cuplikan kode berikut:

Jawa

public class MyActivity extends AppCompatActivity {
  ...
  private AdSize getFullWidthAdaptiveSize() {
    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics();
    display.getMetrics(outMetrics);

    float widthPixels = outMetrics.widthPixels;
    float density = outMetrics.density;

    int adWidth = (int) (widthPixels / density);
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
  }
}

Kotlin

class MyActivity : AppCompatActivity() {
  ...
  private val adaptiveAdSize: AdSize
    get() {
      val display = windowManager.defaultDisplay
      val outMetrics = DisplayMetrics()
      display.getMetrics(outMetrics)

      val density = outMetrics.density

      var adWidthPixels = ad_view_container.width.toFloat()
      if (adWidthPixels == 0f) {
        adWidthPixels = outMetrics.widthPixels.toFloat()
      }

      val adWidth = (adWidthPixels / density).toInt()
      return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
    }
}

Tinggalkan penghapusan panggilan balik aplikasi

Callback onAdLeftApplication untuk semua format iklan telah dihapus demi ProcessLifecycleOwner . Menggunakan API tingkat OS memberi tahu Anda setiap kali pengguna meninggalkan aplikasi Anda, terlepas dari apakah itu karena interaksi iklan atau tidak.

Perhatikan bahwa callback onAdLeftApplication tidak pernah dimaksudkan untuk menjadi pengendali klik iklan, dan mengandalkan callback ini untuk melaporkan klik tidak menghasilkan metrik yang akurat. Misalnya, klik pada ikon PilihanIklan yang meluncurkan browser eksternal memicu panggilan balik tetapi tidak dihitung sebagai klik.

Nama kelas diganti

Tabel di bawah ini mencantumkan nama kelas tertentu yang telah diubah atau dihapus. Singkatnya:

  • Sebagian besar kelas yang terkait dengan UnifiedNativeAd telah diubah namanya menjadi NativeAd .
  • Kelas dan tampilan MobileAds.Settings , NativeExpressAdView , NativeAppInstallAd , NativeContentAd , dan InstreamAd telah dihapus.
  • Semua kelas dengan awalan Publisher telah diganti dengan awalan AdManager .
  • Nama paket InterstitialAd telah berubah.
19.5.0 Kelas 20.0.0 Kelas
com.google.android.gms.ads. com.google.android.gms.ads.
hadiah.IklanVideoBerhadiah dihargai.Iklan Berhadiah
reward.RewardedVideoAdListener rewarded.RewardedAdLoadCallback dan FullScreenContentCallback
hadiah.Item Hadiah dihargai.Item Hadiah
dihargai.RewardedAdCallback OnUserEarnedRewardListener
format.UnifiedNativeAdView nativead.NativeAdView
format.UnifiedNativeAd nativead.NativeAd
format.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
format.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
format.PilihanIklanView nativead.AdChoicesView
format.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
format.MediaView nativead.MediaView
format.NativeAdViewHolder nativead.NativeAdViewHolder
format.NativeAdOptions nativead.NativeAdOptions
format.NativeCustomTemplateAd nativead.NativeCustomFormatAd
format.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd .OnCustomFormatAdLoadedListener
Pengaturan Iklan Seluler DIHAPUS
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
format.PublisherAdViewOptions format.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
Iklan Pengantara interstitial.InterstitialAd
TampilanIklan NativeExpress DIHAPUS
instream.InstreamAd DIHAPUS
mediasi.admob.AdMobExtras DIHAPUS
Korelator DIHAPUS
pencarian.SearchAdRequest DIHAPUS
Antarmuka AdRequest.TagForUnderAgeOfConsent DIHAPUS
Antarmuka AdRequest.MaxAdContentRating DIHAPUS
format.NativeAppInstallAd asli.NativeAd
format.NativeAppInstallAdView native.NativeAdView
mediasi.NativeAppInstallAdMapper mediasi.UnifiedNativeAdMapper
format.NativeContentAd asli.NativeAd
format.NativeContentAdView native.NativeAdView
mediasi.NativeContentAdMapper mediasi.UnifiedNativeAdMapper

Metode dihapus/diganti

Tabel di bawah ini mencantumkan perubahan spesifik dalam versi 20.0.0. Singkatnya:

  • Metode inisialisasi yang ketinggalan zaman telah dihapus dari kelas MobileAds.
  • Beberapa metode dari kelas AdRequest.Builder() telah dihapus atau dipindahkan ke kelas RequestConfiguration .
  • RewardedAd dan InterstitialAd API telah diperbarui agar selaras dengan semua format layar penuh.
  • Fitur korelator telah dihapus.
Kelas v19.5.0 API v20.0.0 API Catatan
Ukuran Iklan getPortraitBanner UkuranIklanDenganWidth() getPortraitAnchored AdaptiveBannerAdSize()
getLandscapeBanner AdSizeWithWidth() getLandscapeAnchored AdaptiveBannerAdSize()
getCurrentOrientation BannerAdSizeWithWidth() getCurrentOrientationAnchored AdaptiveBannerAdSize()
Iklan Seluler inisialisasi (Konteks, String) MobileAds.initialize(Context, OnInitializationComplete Listener) ID aplikasi sekarang disetel di AndroidManifest.xml.
inisialisasi (Konteks, String, MobileAds.Settings) initialize(Context, OnInitializationComplete Listener) Kelas Pengaturan tidak digunakan lagi.
getRewardedVideo AdInstance() DIHAPUS Gunakan RewardedAd API sebagai gantinya.
Pendengar Iklan onAdFailedToLoad(int) onAd FailedToLoad(LoadAdError)
padaAdLeftApplication() DIHAPUS Format iklan layar penuh menggunakan FullscreenContentCallback sebagai pengganti AdListener, dan tidak ada metode yang setara pada FullscreenContentCallback. Metode telah dihapus dari AdListener.
Pengontrol Video getAspectRasio() MediaContent.getAspectRatio()
AdRequest dapatkanJenis Kelamin() DIHAPUS
dapatkanUlang Tahun() DIHAPUS
dapatkan JaringanEkstra() DIHAPUS
setManualImpressions Diaktifkan() DIHAPUS
pembaruanKorelator() DIHAPUS Lihat Pemfilteran konten iklan .
l10nAdRequest.Builder setUlang tahun() DIHAPUS
setGender() DIHAPUS
setIsDesignedForFamilies() DIHAPUS Lihat panduan .
tambahkanTestPerangkat() RequestConfiguration .Builder .setTestDeviceIds() Lihat Mengaktifkan iklan percobaan .
tagForChildDirectedTreatment() RequestConfiguration .Builder.setTagFor ChildDirectedTreatment() Lihat Pemfilteran konten iklan .
setTagFor UnderAgeOfConsent() RequestConfiguration .Builder.setTagFor UnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration .Builder .setMaxAdContentRating()
Tampilan Iklan getMediationAdapter ClassName() ResponseInfo .getMediationAdapter ClassName() Objek ResponseInfo sekarang tersedia melalui metode AdView getResponseInfo().
OpsiIklan Asli setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
Iklan Berhadiah loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) RewardedAd sekarang menggunakan pendekatan pemuatan statis yang sama seperti format layar penuh lainnya.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Konteks, String, AdManagerAdRequest, RewardedAdLoadCallback)
dimuat() DIHAPUS Callback dari metode pemuatan statis menyediakan iklan yang sudah dimuat.
tampilkan (Aktivitas, RewardedAdCallback) tampilkan (Aktivitas, OnUserEarnedRewardListener) Metode pertunjukan ini menganut pendekatan format layar penuh yang lebih luas.
RewardedAdLoadCallback onRewardedAd FailedToLoad(int) onAd FailedToLoad(LoadAdError)
onRewardedAd FailedToLoad(LoadAdError) onAd FailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(Iklan Berhadiah)
AplikasiOpenAdLoadCallback onAppOpenAd FailedToLoad(int) onAd FailedToLoad(LoadAdError)
onAppOpenAd FailedToLoad(LoadAdError) onAd FailedToLoad(LoadAdError)
onAppOpenAd Dimuat (AppOpenAd) diAdLoaded(AppOpenAd)
Panggilan Balik IklanInterstisial Berhadiah onRewardedInterstitialAd FailedToLoad(int) onAd FailedToLoad(LoadAdError)
onRewardedInterstitialAd FailedToLoad(LoadAdError) onAd FailedToLoad(LoadAdError)
onRewardedInterstitialAd Loaded(RewardedInterstitialAd) onAd Loaded(RewardedInterstitialAd)
InterstitialAd InterstitialAdbaru () InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd sekarang menggunakan pendekatan beban statis yang sama seperti format layar penuh lainnya.
setAdListener()
Permintaan Iklan DynamicHeightSearch dapatkan JaringanEkstra() DIHAPUS Kelas NetworkExtras tidak digunakan lagi.
Pemuat Iklan untukIklanKonten() DIHAPUS
untukAppInstallAd() DIHAPUS
denganKorelator() DIHAPUS
getMediationAdapter ClassName() DIHAPUS