Na tej stronie omawiamy migracje bieżących i wcześniejszych wersji.
Migracja z wersji 22 do wersji 23
Minimalny poziom interfejsu API Androida to 21
Od wersji 23.0.0 pakiet SDK do reklam mobilnych Google wymaga do działania wszystkich aplikacji interfejsu API Androida na co najmniej 21 poziomie. Aby dostosować poziom interfejsu API, zmień wartość minSdkVersion
w pliku build.gradle
na poziomie aplikacji na 21 lub wyższą.
Wycofane metody zostały usunięte/zastąpione
Interfejs API wersji 22.0.0 | Interfejs API w wersji 23.0.0 |
---|---|
AdRequest.Builder.addTestDevice() | RequestConfiguration.Builder.setTestDeviceIds() |
AdRequest.Builder.tagForChildDirectedTreatment() | RequestConfiguration.Builder.setTagForChildDirectedTreatment() |
AdRequest.Builder.setIsDesignedForFamilies() | RequestConfiguration.Builder.setMaxAdContentRating() |
AdFormat.UNKNOWN | Brak zamiennika |
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() |
Migracja z wersji 21 do wersji 22
Użyj interfejsu MobileAds.getVersion(), aby pobrać wersję pakietu SDK do reklam mobilnych Google
Metoda MobileAds.getVersionString()
została usunięta w wersji 22.0.0 i zastąpiona funkcją MobileAds.getVersion()
.
Nowa metoda zwraca oczekiwany numer wersji zewnętrznej, na przykład 22.0.0
. Więcej informacji o tej zmianie znajdziesz w artykule o używaniu nowej metody getVersion() pakietu SDK do reklam mobilnych Google.
Usunięte lub zastąpione metody
W tabeli poniżej znajdziesz informacje o konkretnych zmianach w wersji 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 |
Migracja z wersji 20 do wersji 21
Zaktualizuj parametr minSdkVersion do wersji 19 lub nowszej
Od wersji 21.0.0 pakiet SDK do reklam mobilnych Google wymaga do działania wszystkich aplikacji interfejsu API Androida na poziomie 19 lub wyższym. Aby dostosować poziom interfejsu API, zmień wartość minSdkVersion
w pliku kompilacji aplikacji na 19 lub więcej.
Wymuszaj ścisłą wartość null
W ramach przygotowań do egzekwowania ścisłej wartości null do wszystkich interfejsów API, które wcześniej nie definiowały jawności wartości null, dodawane są adnotacje @NonNull
.
Ta zmiana może spowodować uszkodzenie aplikacji i aplikacji Kotlin, które korzystają z platform kontrolnych Java o wartości null, jeśli wystąpiły naruszenia bezpieczeństwa o wartości null i nie obsługiwały wcześniej wartości null
w bezpieczny sposób (zapoznaj się z dokumentacją usługi Kotlin na temat Null-safety).
Usunięcie metody addNetworkExtras()
Metoda addNetworkExtras()
, która przekazuje dodatkowe parametry jako wystąpienie NetworkExtras
do określonego adaptera sieci reklamowej, została wycofana w pakiecie SDK w wersji 20.3.0 i zostanie usunięta w wersji 21.0.0. Użyj metody addNetworkExtrasBundle()
z tej samej klasy AdRequest.Builder
.
Usuwanie metod lokalizacji
Te metody lokalizacji zostaną usunięte w wersji 21.0.0:
- Metoda
setLocation(Location location)
w klasieAdRequest.Builder
, która ustawia lokalizację użytkownika na potrzeby kierowania w ramach zapośredniczenia. - Metoda
getLocation()
w klasieAdRequest
, która zwraca informacje o kierowaniu na lokalizację użytkownika przekazane wcześniej do metodysetLocation(Location location)
. - Metoda
getLocation()
w klasieMediationAdConfiguration
, która zwraca lokalizację użytkownika, jeśli została określona przezAdRequest
.
Google nie używa danych o lokalizacji do kierowania reklam. W razie potrzeby do przekazywania informacji zewnętrznym sieciom reklamowym należy używać interfejsów API innych firm.
Wycofanie interfejsów zdarzeń niestandardowych
Zdarzenia niestandardowe umożliwiają wydawcom, którzy korzystają z AdMobzapośredniczenia, dodanie zapośredniczenia kaskadowego w przypadku sieci reklamowej, która nie należy do sieci reklamowej obsługiwanej przez AdMob.
Wszystkie interfejsy zdarzeń niestandardowych zostały wycofane i zastąpione interfejsami klasy Adapter
i MediationAdLoadCallback
.
W tabeli poniżej znajdziesz listę odpowiednich klas lub interfejsów, które powinny być używane w poszczególnych interfejsach zdarzeń niestandardowych od wersji 21.0.0:
Interfejsy w wersji 20.0.0 | Klasa/ interfejs w wersji 21.0.0 |
---|---|
CustomEvent | Adapter |
CustomEventBanner | |
CustomEventInterstitial | |
CustomEventNative | |
CustomEventBannerListener |
Adapter,
|
CustomEventInterstitialListener | |
CustomEventListener | |
CustomEventNativeListener |
Migracja z wersji 19 do wersji 20
W wersji 20.0.0 wprowadzono wiele zmian powodujących niezgodność. W wersji 19.7.0 wprowadzono wiele nowych interfejsów API, a w ramach przygotowań do wprowadzenia wersji 20.0.0 wiele klas zostało wycofanych lub zmienionych. W tym przewodniku omawiamy najważniejsze zmiany wprowadzone w wersji 20.0.0.
Aktualizacje interfejsu API formatu pełnoekranowego
Od wersji 20.0.0 formaty reklam pełnoekranowych, reklam z nagrodą, reklam pełnoekranowych z nagrodą i reklam wyświetlanych przy otwarciu aplikacji są ujednolicone pod kątem spójnego interfejsu API.
Wszystkie interfejsy API w formacie pełnoekranowym korzystają z tych zasad:
- Metoda ładowania statycznego
- Podobny mechanizm wywołania zwrotnego lub modułu obsługi wczytywania
- Wykorzystanie klasy
FullScreenContentCallback
w wywołaniach zwrotnych prezentacji
Usunięcie starszej wersji interfejsu RewardedVideoAd API
Nowszy interfejs API RewardedAd
został wprowadzony ponownie w marcu 2019 roku i od ponad 18 miesięcy jest preferowanym interfejsem API reklam z nagrodą. Zawierała więcej udoskonaleń niż starszy interfejs API RewardedVideoAd
, w tym możliwość jednoczesnego wczytywania więcej niż 1 reklamy z nagrodą.
Starsza wersja interfejsu API RewardedVideoAd
została usunięta z pakietu SDK w wersji 20.0.0.
Wycofanie banerów inteligentnych i zastąpienie banerów adaptacyjnych
Reklamy typu banery inteligentne zostały wycofane i zastąpione banerami adaptacyjnymi. Banery adaptacyjne zapewniają dużą skuteczność i większą elastyczność w ustawianiu szerokości reklam. Jeśli nadal chcesz używać banerów o pełnej szerokości, możesz to zrobić za pomocą banerów adaptacyjnych, jak pokazano w tym fragmencie kodu:
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) } }
Zrezygnuj z usunięcia wywołania zwrotnego aplikacji
Wywołanie zwrotne onAdLeftApplication
w przypadku wszystkich formatów reklam zostało usunięte i zastąpione właściwością ProcessLifecycleOwner
.
Interfejs API na poziomie systemu operacyjnego powiadamia Cię za każdym razem, gdy użytkownik zamknie aplikację, niezależnie od tego, czy jest to spowodowane interakcją z reklamą.
Pamiętaj, że wywołanie zwrotne onAdLeftApplication
nigdy nie miało być modułem obsługi kliknięć reklamy, a korzystanie z niego do raportowania kliknięć nie zapewniło dokładnych danych. Na przykład kliknięcie ikony Informacja, które uruchomiło zewnętrzną przeglądarkę, wywołało wywołanie zwrotne, ale nie zostało zliczone jako kliknięcie.
Zmiany nazw zajęć
Tabela poniżej zawiera nazwy konkretnych klas, które zostały zmienione lub usunięte. W skrócie:
- Nazwa większości zajęć powiązanych z tematem
UnifiedNativeAd
została zmieniona naNativeAd
. - Zajęcia i widoki
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
iInstreamAd
zostały usunięte. - Wszystkie klasy z prefiksem
Publisher
zostały zastąpione prefiksemAdManager
. - Nazwa pakietu
InterstitialAd
uległa zmianie.
19.5.0 Klasa | Zajęcia 20.0.0 |
---|---|
com.google.android.gms.ads. | com.google.android.gms.ads. |
reward.RewardedVideoAd | rewarded.RewardedAd |
reward.RewardedVideoAdListener | Award.wardsAdLoadCallback i 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 |
nativead.NativeCustomFormatAd |
MobileAds.Settings | Usunięta |
doubleclick.PublisherAdRequest | admanager.AdManagerAdRequest |
doubleclick.PublisherAdView | admanager.AdManagerAdView |
formats.PublisherAdViewOptions | formats.AdManagerAdViewOptions |
doubleclick.PublisherInterstitialAd | admanager.AdManagerInterstitialAd |
InterstitialAd | interstitial.InterstitialAd |
NativeExpressAdView | Usunięta |
instream.InstreamAd | Usunięta |
mediation.admob.AdMobExtras | Usunięta |
Korelator | Usunięta |
search.SearchAdRequest | Usunięta |
Interfejs AdRequest.TagForUnderAgeOfConsent | Usunięta |
Interfejs AdRequest.MaxAdContentRating | Usunięta |
formats.NativeAppInstallAd | native.NativeAd |
formats.NativeAppInstallAdView | native.NativeAdView |
mediation.NativeAppInstallAdMapper | mediation.UnifiedNativeAdMapper |
formats.NativeContentAd | native.NativeAd |
formats.NativeContentAdView | native.NativeAdView |
mediation.NativeContentAdMapper | mediation.UnifiedNativeAdMapper |
Metody zostały usunięte/zastąpione
W tabeli poniżej znajdziesz informacje o konkretnych zmianach w wersji 20.0.0. W skrócie:
- Nieaktualne metody inicjowania zostały usunięte z klasy MobileAds.
- Niektóre metody z klasy
AdRequest.Builder()
zostały usunięte lub przeniesione do klasyRequestConfiguration
. - Zaktualizowaliśmy interfejsy API reklam z nagrodą i reklam pełnoekranowych, aby były zgodne z formatami reklam pełnoekranowych.
- Funkcje korelatora zostały usunięte.
Klasa | Interfejs API w wersji 19.5.0 | Interfejs API w wersji 20.0.0 | Uwagi |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getscapeBanner |
getscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | zainicjuj(kontekst, ciąg znaków) | MobileAds.initialize(Context, OnInitializationComplete |
Identyfikator aplikacji jest teraz ustawiony w pliku AndroidManifest.xml. |
zainicjuj(Context, String, MobileAds.Settings) | zainicjuj(Context, OnInitializationComplete |
Klasa ustawień została wycofana. | |
getRewardedVideo |
Usunięta | Zamiast tego użyj interfejsu RewardedAd API. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
onAdLeftApplication() | Usunięta | Formaty reklam pełnoekranowych używają funkcji FullscreenContentCallback zamiast AdListener. W przypadku funkcji FullscreenContentCallback nie ma podobnej metody. Metoda została usunięta z AdListener. | |
VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
AdRequest | getGender() | Usunięta | |
getBirthday() | Usunięta | ||
getNetworkExtras() | Usunięta | ||
setManualWyświetlenia |
Usunięta | ||
updateCorrelator() | Usunięta | Zobacz Filtrowanie treści reklamy. | |
AdRequest.Kompilator | setBirthday() | Usunięta | |
setGender() | Usunięta | ||
setIsDesignedForFamilies() | Usunięta | Zobacz przewodnik. | |
addTestDevice() | RequestConfiguration |
Patrz Włączanie reklam testowych. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Zobacz Filtrowanie treści reklamy. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
Obiekt ResponseInfo jest teraz dostępny przez metodę AdView getResponseInfo(). |
NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Kontekst; Ciąg znaków; Żądanie AdRequest; RewardedAdLoadCallback) | Reklamy z nagrodą korzystają teraz z tego samego procesu ładowania statycznego co w przypadku innych formatów pełnoekranowych. |
loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Kontekst; ciąg znaków; AdManagerAdRequest; RewardedAdLoadCallback) | ||
isLoaded() | Usunięta | Wywołanie zwrotne metody ładowania statycznego powoduje, że reklama została już wczytana. | |
show(Aktywność, Wywołanie reklamy z nagrodą) | show(Activity, OnUserGenerateed RewardsListener) | Ta metoda dotycząca programu jest zgodna z bardziej ogólnym podejściem do formatu pełnoekranowego. | |
RewardedAdLoadCallback | onRewardedAd |
onAd |
|
onRewardedAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
RewardedInterstitialAdLoad |
onRewardedInterstitialAd |
onAd |
|
onRewardedInterstitialAd |
onAd |
||
onRewardedInterstitialAd |
onAd |
||
InterstitialAd | nowa InterstitialAd() | InterstitialAd.load(Context; String, AdRequest, InterstitialAdLoadCallback) | W przypadku reklam pełnoekranowych korzysta teraz z tego samego procesu ładowania statycznego co w przypadku innych formatów pełnoekranowych. |
setAdListener() | |||
Żądanie DynamicHeightSearchAd |
getNetworkExtras() | Usunięta | Klasa NetworkExtras została wycofana. |
AdLoader | forContentAd() | Usunięta | |
forAppInstallAd() | Usunięta | ||
withCorrelator() | Usunięta | ||
getMediationAdapter |
Usunięta |