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 kelasAdRequest.Builder
yang menetapkan lokasi pengguna untuk tujuan penargetan mediasi. - Metode
getLocation()
di kelasAdRequest
yang mengembalikan informasi penargetan lokasi pengguna yang sebelumnya diteruskan ke metodesetLocation(Location location)
. - Metode
getLocation()
di kelasMediationAdConfiguration
yang mengembalikan 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 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 menjadiNativeAd
. - Kelas dan tampilan
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
, danInstreamAd
telah dihapus. - Semua kelas dengan awalan
Publisher
telah diganti dengan awalanAdManager
. - 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 kelasRequestConfiguration
. - 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 |