Halaman ini membahas migrasi untuk versi saat ini dan sebelumnya.
Bermigrasi dari v23 ke v24
Subbagian berikut menjelaskan perubahan yang dapat menyebabkan gangguan dan perbedaan perilaku antara versi utama 23 dan 24 Google Mobile Ads SDK.
API level Android minimum adalah 23
Mulai versi 24.0.0, Google Mobile Ads SDK mengharuskan semua aplikasi berjalan
di level API Android minimum 23 agar dapat berjalan. Untuk menyesuaikan level API, ubah nilai
minSdk
dalam file build.gradle
tingkat aplikasi Anda menjadi 23 atau yang lebih tinggi.
Perubahan pada inisialisasi dan pemuatan yang dioptimalkan
Secara default, tanda OPTIMIZE_INITIALIZATION
dan OPTIMIZE_AD_LOADING
ditetapkan ke true
. Untuk mengetahui informasi selengkapnya tentang flag ini, lihat
Mengoptimalkan inisialisasi dan pemuatan.
Menghapus dependensi firebase-ads dan firebase-ads-lite
Mulai versi 24.0.0, rilis SDK tidak lagi mendistribusikan dependensi
firebase-ads
dan firebase-ads-lite
. Gunakan dependensi play-services-ads
sebagai gantinya.
Menghapus API orientasi yang tidak digunakan lagi untuk iklan di layar pembuka aplikasi
- Menghapus metode
AppOpenAd.load()
yang menerima parameter input orientasi. Gunakan metodeAppOpenAd.load()
yang tidak menggunakan orientasi. - Menghapus enum
AppOpenAdOrientation
.
Callback reward yang disederhanakan untuk adaptor mediasi
Versi 24.0.0 menambahkan callback onUserEarnedReward()
di
MediationRewardedAdCallback
dan menghentikan penggunaan onUserEarnedReward(RewardItem)
.
Adaptor mediasi harus mulai memanggil onUserEarnedReward()
saat pengguna memperoleh
reward.
Saat meneruskan callback dari adaptor mediasi, semua versi Google Mobile Ads SDK menampilkan reward yang ditentukan di UI AdMob dalam
OnUserEarnedRewardListener
.
Kelas dihapus
Class berikut dihapus tanpa penggantian:
DynamicHeightSearchAdRequest
SearchAdRequest
SearchAdView
Metode dihapus
Metode berikut dihapus tanpa penggantian:
Kelas | Metode |
---|---|
RewardedInterstitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) |
|
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Metode yang tidak digunakan lagi
Metode berikut tidak digunakan lagi dan tidak ada penggantinya:
Kelas | Metode |
---|---|
Adaptor | loadInterscrollerAd() |
RtbAdapter | loadRtbInterscrollerAd() |
Bermigrasi dari v22 ke v23
Subbagian berikut menjelaskan perubahan yang menyebabkan gangguan dan perbedaan perilaku antara versi utama 22 dan 23 Google Mobile Ads SDK.
API level Android minimum adalah 21
Mulai versi 23.0.0, SDK Iklan Seluler Google mewajibkan semua aplikasi berada di level API Android minimum 21 agar dapat berjalan. Untuk menyesuaikan level API, ubah
nilai minSdkVersion
dalam file build.gradle
tingkat aplikasi Anda menjadi 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 penggantian |
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
Subbagian berikut menjelaskan perubahan yang menyebabkan gangguan dan perbedaan perilaku antara Google Mobile Ads SDK versi 21 dan 22.
Gunakan MobileAds.getVersion() untuk mendapatkan versi Google Mobile Ads SDK
Metode MobileAds.getVersionString()
dihapus di versi 22.0.0 dan digantikan
dengan
MobileAds.getVersion()
.
Metode baru ini menampilkan nomor versi eksternal yang diharapkan—misalnya,
22.0.0
. Untuk mengetahui informasi selengkapnya tentang perubahan ini, lihat Menggunakan metode getVersion()
Google Mobile Ads SDK baru.
Metode yang dihapus atau diganti
Tabel berikut mencantumkan perubahan spesifik dalam 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 | Adapter |
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
Subbagian berikut menjelaskan perubahan yang dapat menyebabkan gangguan dan perbedaan perilaku antara Google Mobile Ads SDK versi 20 dan 21:
Mengupdate minSdkVersion ke 19 atau yang lebih tinggi
Mulai dari versi 21.0.0, Google Mobile Ads SDK mewajibkan semua aplikasi berada di level API Android minimum 19 agar dapat berjalan. Untuk menyesuaikan level API, ubah nilai minSdkVersion
dalam file build aplikasi Anda menjadi 19 atau yang lebih tinggi.
Menerapkan nullabilitas ketat
Sebagai persiapan untuk menerapkan nullability ketat, anotasi @NonNull
ditambahkan di semua API yang sebelumnya tidak secara eksplisit menentukan nullability.
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 aman (lihat dokumentasi Kotlin tentang Keamanan null).
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. Sebagai gantinya, 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 classAdRequest.Builder
yang menetapkan lokasi pengguna untuk tujuan penargetan mediasi. - Metode
getLocation()
di classAdRequest
yang menampilkan informasi penargetan lokasi pengguna yang sebelumnya diteruskan ke metodesetLocation(Location location)
. - Metode
getLocation()
di classMediationAdConfiguration
yang menampilkan lokasi pengguna, jika ditentukan olehAdRequest
.
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 penggunaan antarmuka peristiwa kustom
Peristiwa kustom memungkinkan penayang yang menggunakan Mediasi AdMob menyiapkan sumber iklan waterfall yang bukan salah satu sumber iklan yang didukung AdMob.
Semua antarmuka peristiwa
kustom
tidak digunakan lagi dan digantikan dengan
class Adapter
dan
antarmuka MediationAdLoadCallback
.
Tabel berikut mencantumkan class atau antarmuka terkait yang harus Anda gunakan untuk setiap antarmuka peristiwa kustom yang dimulai dari versi 21.0.0:
Antarmuka v20.0.0 | Class/ Antarmuka v21.0.0 |
---|---|
CustomEvent | Adapter |
CustomEventBanner | |
CustomEventInterstitial | |
CustomEventNative | |
CustomEventBannerListener |
Adapter,
|
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 besar di versi 20.0.0.
Update API format layar penuh
Mulai versi 20.0.0, format iklan interstisial, reward, interstisial reward, dan Layar Pembuka Aplikasi distandardisasi untuk mengikuti desain API yang konsisten.
Semua API format layar penuh menggunakan prinsip berikut:
- Metode pemuatan statis
- Mekanisme callback atau handler pemuatan yang serupa
- Mengandalkan class
FullScreenContentCallback
untuk callback presentasi
Penghapusan API RewardedVideoAd lama
API
RewardedAd
yang lebih baru pertama kali diperkenalkan pada Maret 2019 dan telah menjadi API reward pilihan selama lebih dari 18 bulan. API ini telah mengalami lebih banyak peningkatan dibandingkan dengan API
RewardedVideoAd
lama, termasuk kemampuan untuk memuat lebih dari satu iklan reward
sekaligus.
API RewardedVideoAd
lama dihapus di SDK versi 20.0.0.
Penghentian penggunaan banner smart untuk mendukung banner adaptif
Iklan banner smart tidak digunakan lagi dan digantikan dengan iklan banner adaptif. Banner adaptif memberikan performa yang lebih baik dan fleksibilitas yang lebih besar dalam menetapkan lebar iklan. Jika Anda lebih memilih untuk terus menggunakan banner lebar penuh, hal itu 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) } }
Menghapus callback aplikasi keluar
Callback onAdLeftApplication
untuk semua format iklan telah dihapus dan digantikan dengan
ProcessLifecycleOwner
.
Menggunakan API tingkat OS akan memberi tahu Anda setiap kali pengguna keluar dari aplikasi, terlepas dari
apakah hal itu disebabkan oleh interaksi iklan atau tidak.
Perhatikan bahwa callback onAdLeftApplication
tidak pernah dimaksudkan untuk menjadi
penanganan klik iklan, dan mengandalkan callback ini untuk melaporkan klik tidak menghasilkan
metrik yang akurat. Misalnya, klik ikon AdChoices yang meluncurkan browser eksternal memanggil callback, tetapi tidak dihitung sebagai klik.
Mengganti nama kelas
Tabel berikut mencantumkan nama class tertentu yang telah berubah atau dihapus:
- Sebagian besar class yang terkait dengan
UnifiedNativeAd
telah diganti namanya menjadiNativeAd
. - Class dan tampilan
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
, danInstreamAd
telah dihapus. - Semua class dengan awalan
Publisher
telah diganti dengan awalanAdManager
. - Nama paket
InterstitialAd
telah berubah.
Kelas 19.5.0 | Class 20.0.0 |
---|---|
com.google.android.gms.ads. | com.google.android.gms.ads. |
reward.RewardedVideoAd | rewarded.RewardedAd |
reward.RewardedVideoAdListener | rewarded.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 |
formats.NativeCustomTemplateAd |
nativead.NativeCustomFormatAd |
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 berikut mencantumkan perubahan spesifik dalam versi 20.0.0:
- Metode inisialisasi yang sudah tidak berlaku telah dihapus dari class MobileAds.
- Beberapa metode dari class
AdRequest.Builder()
telah dihapus atau dipindahkan ke classRequestConfiguration
. - API RewardedAd dan InterstitialAd telah diupdate agar sesuai dengan semua format layar penuh.
- Fitur korelasinya telah dihapus.
Kelas | API v19.5.0 | API v20.0.0 | Catatan |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete |
ID aplikasi kini ditetapkan di AndroidManifest.xml. |
initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
Class Setelan telah dihentikan penggunaannya. | |
getRewardedVideo |
Dihapus | Sebagai gantinya, gunakan RewardedAd API. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
onAdLeftApplication() | Dihapus | Format iklan layar penuh menggunakan FullscreenContentCallback, bukan AdListener, dan tidak ada metode yang setara di FullscreenContentCallback. Metode telah dihapus dari AdListener. | |
VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
AdRequest | getGender() | Dihapus | |
getBirthday() | Dihapus | ||
getNetworkExtras() | Dihapus | ||
setManualImpressions |
Dihapus | ||
updateCorrelator() | Dihapus | Lihat Pemfilteran konten iklan. | |
AdRequest.Builder | setBirthday() | Dihapus | |
setGender() | Dihapus | ||
setIsDesignedForFamilies() | Dihapus | Lihat panduan. | |
addTestDevice() | RequestConfiguration |
Lihat Mengaktifkan iklan percobaan. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Lihat Pemfilteran konten iklan. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
Objek ResponseInfo tersedia menggunakan
metode AdView , getResponseInfo() .
|
NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | RewardedAd kini menggunakan pendekatan pemuatan statis yang sama dengan format layar penuh lainnya. |
loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Dihapus | Callback dari metode pemuatan statis menyediakan iklan yang sudah dimuat. | |
show(Activity, RewardedAdCallback) | show(Activity, OnUserEarnedRewardListener) | Metode tampilan ini mematuhi pendekatan format layar penuh yang lebih luas. | |
RewardedAdLoadCallback | onRewardedAd |
onAd |
|
onRewardedAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
RewardedInterstitialAdLoad |
onRewardedInterstitialAd |
onAd |
|
onRewardedInterstitialAd |
onAd |
||
onRewardedInterstitialAd |
onAd |
||
InterstitialAd | new InterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | InterstitialAd kini menggunakan pendekatan pemuatan statis yang sama dengan format layar penuh lainnya. |
setAdListener() | |||
getNetworkExtras() | Dihapus | Class NetworkExtras telah dihentikan penggunaannya. | |
AdLoader | forContentAd() | Dihapus | |
forAppInstallAd() | Dihapus | ||
withCorrelator() | Dihapus | ||
getMediationAdapter |
Dihapus |