Migrasi SDK

Halaman ini membahas migrasi untuk versi saat ini dan sebelumnya.

Bermigrasi dari v22 ke v23

Level API Android minimum adalah 21

Mulai versi 23.0.0, Google Mobile Ads SDK mewajibkan semua aplikasi menggunakan Android API level 21 minimum agar dapat berjalan. Untuk menyesuaikan level API, ubah nilai minSdkVersion dalam file build.gradle level aplikasi ke 21 atau yang lebih tinggi.

Metode yang Tidak Digunakan Lagi Dihapus/Diganti

API v22.0.0 API v23.0.0
AdRequest.Builder.addTestDevice() RequestConfiguration.Builder.setTestDeviceIds()
AdRequest.Builder.tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment()
AdRequest.Builder.setIsDesignedForFamilies() RequestConfiguration.Builder.setMaxAdContentRating()
AdFormat.UNKNOWN Tidak ada pengganti
AdLoader.Builder.forUnifiedNativeAd() AdLoader.Builder.forNativeAd()
AdLoader.Builder.forCustomTemplateAd() AdLoader.Builder.forCustomFormatAd()
AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.formats.NativeAdOptions) AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.nativead.NativeAdOptions)
void MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

Bermigrasi dari v21 ke v22

Menggunakan MobileAds.getVersion() untuk mendapatkan versi Google Mobile Ads SDK

Metode MobileAds.getVersionString() dihapus dari versi 22.0.0 dan digantikan dengan MobileAds.getVersion().

Metode baru menampilkan nomor versi eksternal yang diharapkan—misalnya, 22.0.0. Untuk mengetahui informasi selengkapnya tentang perubahan ini, baca Menggunakan metode getVersion() Google Mobile Ads SDK yang baru.

Metode yang dihapus atau diganti

Tabel di bawah mencantumkan perubahan spesifik pada versi 22.0.0.

v21.0.0 v22.0.0
MobileAds.getVersionString() MobileAds.getVersion()
NativeCustomFormatAd.getVideoMediaView() NativeCustomFormatAd.getMediaContent()
NativeCustomFormatAd.getVideoController() NativeCustomFormatAd.getMediaContent().getVideoController()
AdRequest.Builder.setAdInfo() AdRequest.Builder.setAdString()
MediationRewardedVideoAdAdapter Adaptor
MediationRewardedVideoAdListener
com.google.android.gms.ads.mediation.VersionInfo com.google.android.gms.ads.VersionInfo
com.google.android.gms.ads.doubleclick.AppEventListener com.google.android.gms.ads.admanager.AppEventListener

Bermigrasi dari v20 ke v21

Mengupdate minSdkVersion ke 19 atau yang lebih tinggi

Mulai versi 21.0.0, Google Mobile Ads SDK mewajibkan semua aplikasi menggunakan Android API level 19 minimum agar dapat berjalan. Untuk menyesuaikan level API, ubah nilai minSdkVersion dalam file build aplikasi ke versi 19 atau yang lebih tinggi.

Menerapkan nullability yang ketat

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

Perubahan ini dapat merusak aplikasi Kotlin dan aplikasi yang menggunakan framework pemeriksaan null Java jika ada pelanggaran keamanan null dan sebelumnya tidak menangani nilai null dengan cara yang aman (lihat dokumentasi Kotlin tentang 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 dari versi 21.0.0. Gunakan metode addNetworkExtrasBundle() dari class AdRequest.Builder yang sama.

Penghapusan metode lokasi

Metode lokasi berikut akan dihapus di versi 21.0.0:

  • Metode setLocation(Location location) di class AdRequest.Builder yang menetapkan lokasi pengguna untuk tujuan penargetan mediasi.
  • Metode getLocation() di class AdRequest yang menampilkan informasi penargetan lokasi pengguna yang sebelumnya diteruskan ke metode setLocation(Location location).
  • Metode getLocation() di class MediationAdConfiguration yang menampilkan 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 peristiwa kustom

Peristiwa kustom memungkinkan penayang menggunakan AdMob mediasi untuk menambahkan mediasi waterfall untuk jaringan iklan yang bukan salah satu dari jaringan iklan yang didukung AdMob.

Semua antarmuka peristiwa kustom tidak digunakan lagi dan digantikan dengan class Adapter dan antarmuka MediationAdLoadCallback.

Tabel di bawah ini mencantumkan class atau antarmuka terkait yang harus digunakan untuk setiap antarmuka peristiwa kustom mulai versi 21.0.0:

Antarmuka v20.0.0 Kelas/ Antarmuka v21.0.0
CustomEvent Adaptor
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adaptor, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Bermigrasi dari v19 ke v20

Ada banyak perubahan yang dapat menyebabkan gangguan pada versi 20.0.0. Versi 19.7.0 memperkenalkan banyak API baru, dan menghentikan penggunaan atau mengganti nama banyak class sebagai persiapan untuk versi 20.0.0. Panduan ini menyoroti perubahan utama pada versi 20.0.0.

Update API format layar penuh

Mulai versi 20.0.0, format iklan interstisial, reward, interstisial reward, dan Layar Pembuka Aplikasi distandarkan untuk mengikuti desain API yang konsisten.

Semua API format layar penuh menggunakan prinsip-prinsip berikut:

  • Metode pemuatan statis
  • Mekanisme pengendali atau callback pemuatan yang serupa
  • Mengandalkan class FullScreenContentCallback untuk callback presentasi

Penghapusan RewardVideoAd API lama

RewardedAd API yang lebih baru pertama kali diperkenalkan pada Maret 2019 dan telah menjadi API reward pilihan selama lebih dari 18 bulan. API ini memiliki lebih banyak peningkatan dibandingkan dengan RewardedVideoAd API lama, termasuk kemampuan untuk memuat lebih dari satu iklan reward sekaligus.

RewardedVideoAd API lama dihapus di SDK versi 20.0.0.

Penghentian banner cerdas untuk mendukung banner adaptif

Iklan banner cerdas tidak digunakan lagi dan digantikan dengan iklan banner adaptif. Banner adaptif memberikan performa yang unggul dan lebih fleksibel dalam menetapkan lebar iklan. Jika Anda memilih untuk terus menggunakan banner dengan lebar penuh, hal ini masih dapat dilakukan menggunakan banner adaptif, seperti yang ditunjukkan dalam cuplikan kode berikut:

Java

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)
    }
}

Biarkan penghapusan callback aplikasi

Callback onAdLeftApplication untuk semua format iklan telah dihapus dan diganti dengan ProcessLifecycleOwner. Penggunaan API tingkat OS akan memberi tahu Anda setiap kali pengguna keluar dari aplikasi, terlepas dari apakah hal tersebut disebabkan oleh 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 AdChoices yang meluncurkan browser eksternal memanggil callback, tetapi tidak dihitung sebagai klik.

Penggantian nama class

Tabel di bawah mencantumkan nama class tertentu yang telah diubah atau dihapus. Secara ringkasan:

  • Sebagian besar class yang terkait dengan UnifiedNativeAd telah diganti namanya menjadi NativeAd.
  • Class serta tampilan MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd, dan InstreamAd telah dihapus.
  • Semua class dengan awalan Publisher telah diganti dengan awalan AdManager.
  • Nama paket InterstitialAd telah berubah.
Kelas 19.5.0 Kelas 20.0.0
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener reward.RewardedAdLoadCallback dan FullScreenContentCallback
reward.RewardItem rewarded.RewardItem
rewarded.RewardedAdCallback OnUserEarnedRewardListener
formats.UnifiedNativeAdView nativead.NativeAdView
formats.UnifiedNativeAd nativead.NativeAd
formats.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
formats.AdChoicesView nativead.AdChoicesView
formats.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
formats.MediaView nativead.MediaView
formats.NativeAdViewHolder nativead.NativeAdViewHolder
formats.NativeAdOptions nativead.NativeAdOptions
formats.NativeCustomTemplateAd nativead.NativeCustomFormatAd
format.NativeCustomTemplateAd.OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
MobileAds.Settings Dihapus
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView Dihapus
instream.InstreamAd Dihapus
mediation.admob.AdMobExtras Dihapus
Korelator Dihapus
search.SearchAdRequest Dihapus
Antarmuka AdRequest.TagForUnderAgeOfConsent Dihapus
Antarmuka AdRequest.MaxAdContentRating Dihapus
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

Metode dihapus/diganti

Tabel di bawah mencantumkan perubahan spesifik pada versi 20.0.0. Ringkasan:

  • Metode inisialisasi yang sudah tidak berlaku telah dihapus dari class MobileAds.
  • Beberapa metode dari class AdRequest.Builder() telah dihapus atau dipindahkan ke class RequestConfiguration.
  • RewardAd dan InterstitialAd API telah diupdate agar sesuai dengan semua format layar penuh.
  • Fitur korelator telah dihapus.
Class API v19.5.0 API v20.0.0 Catatan
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds inisialisasi(Konteks, String) MobileAds.Initialize(Context, OnInitializationCompletePemroses) ID aplikasi kini sudah ditetapkan di AndroidManifest.xml.
inisialisasi(Konteks, String, MobileAds.Settings) inisialisasi(Context, OnInitializationCompletePemroses) Class Settings sudah tidak digunakan lagi.
getRewardVideoAdInstance() Dihapus Sebagai gantinya, gunakan RewardedAd API.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() Dihapus Format iklan layar penuh menggunakan FullscreenContentCallback sebagai pengganti AdListener, dan tidak ada metode yang setara pada FullscreenContentCallback. Metode ini telah dihapus dari AdListener.
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() Dihapus
getBirthday() Dihapus
getNetworkExtras() Dihapus
setManualTayanganDiaktifkan() Dihapus
updateCorrelator() Dihapus Lihat Pemfilteran konten iklan.
AdRequest.Builder setBirthday() Dihapus
setGender() Dihapus
setIsDesignedForFamilies() Dihapus Lihat panduan.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Lihat Mengaktifkan iklan percobaan.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() Lihat Pemfilteran konten iklan.
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() Objek ResponseInfo sekarang tersedia melalui metode AdView getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardAd.load(Context, String, AdRequest, RewardedAdLoadCallback) RewardAd kini menggunakan pendekatan pemuatan statis yang sama seperti format layar penuh lainnya.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Dihapus Callback dari metode pemuatan statis menyediakan iklan yang sudah dimuat.
show(Aktivitas, RewardedAdCallback) show(Aktivitas, OnUserEarnedRewardListener) Metode acara ini mengikuti pendekatan format layar penuh yang lebih luas.
RewardedAdLoadCallback onRewardAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdDimuat(AppOpenAd) onAdLoaded(AppOpenAd)
RewardInterstitialAdLoadCallback onRewardInterstitialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardInterstitialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardInterstitialAdLoaded(RewardedInterstitialAd) onAdLoaded(RewardedInterstitialAd)
InterstitialAd baru InterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd kini menggunakan pendekatan pemuatan statis yang sama seperti format layar penuh lainnya.
setAdListener()
DynamicHeightSearchAdPermintaan getNetworkExtras() Dihapus Class NetworkExtras tidak digunakan lagi.
AdLoader forContentAd() Dihapus
forAppInstallAd() Dihapus
withCorrelator() Dihapus
getMediationAdapterClassName() Dihapus