Na tej stronie znajdziesz informacje o migracjach w przypadku bieżących i poprzednich wersji.
Migracja z wersji 23 do 24
W podsekcjach poniżej opisujemy zmiany powodujące niezgodność i różnice w działaniu między wersjami 23 i 24 pakietu SDK do reklam mobilnych Google.
Minimalny poziom interfejsu API Androida to 23.
Od wersji 24.0.0 pakiet SDK do reklam mobilnych Google wymaga, aby wszystkie aplikacje działały na Androidzie w wersji API 23 lub nowszej. Aby dostosować poziom interfejsu API, zmień wartość minSdk
w pliku build.gradle
na poziomie aplikacji na 23 lub wyższą.
Zmiany w zoptymalizowanej inicjalizacji i wczytywaniu
Domyślnie flagi OPTIMIZE_INITIALIZATION
i OPTIMIZE_AD_LOADING
są ustawione na true
. Więcej informacji o tych flagach znajdziesz w artykule Optymalizacja inicjowania i wczytywania.
Usunięto zależności firebase-ads i firebase-ads-lite
Od wersji 24.0.0 pakiety SDK nie zawierają już zależności firebase-ads
i firebase-ads-lite
. Zamiast tego użyj zależności play-services-ads
.
Usunięto wycofane interfejsy API orientacji w przypadku reklam wyświetlanych przy otwarciu aplikacji
- Usunięto metody
AppOpenAd.load()
, które akceptują parametr wejściowy orientacji. Zamiast tego używaj metodAppOpenAd.load()
, które nie przyjmują orientacji. - Usunięto wyliczenie
AppOpenAdOrientation
.
Uproszczone wywołanie zwrotne dotyczące nagrody w przypadku adapterów zapośredniczenia
W wersji 24.0.0 dodaliśmy wywołanie zwrotne onUserEarnedReward()
w MediationRewardedAdCallback
i wycofaliśmy onUserEarnedReward(RewardItem)
.
Gdy użytkownik zdobędzie nagrodę, adaptery mediacji muszą zacząć wywoływać onUserEarnedReward()
.
Podczas przekazywania wywołań zwrotnych z adapterów do mediacji wszystkie wersje pakietu SDK do reklam mobilnych Google zwracają nagrodę zdefiniowaną w interfejsie AdMob w OnUserEarnedRewardListener
.
Zajęcia zostały usunięte
Te zajęcia zostały usunięte bez zastąpienia:
DynamicHeightSearchAdRequest
SearchAdRequest
SearchAdView
Usunięte metody
Te metody zostały usunięte bez zastąpienia:
Klasa | Metoda |
---|---|
RewardedInterstitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) |
|
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Wycofane metody
Te metody zostały wycofane i nie mają odpowiedników:
Klasa | Metoda |
---|---|
Adapter | loadInterscrollerAd() |
RtbAdapter | loadRtbInterscrollerAd() |
Migracja z wersji 22 do wersji 23
W podsekcjach poniżej opisujemy zmiany powodujące niezgodność i różnice w działaniu między wersjami 22 i 23 pakietu SDK do reklam mobilnych Google.
Minimalny poziom interfejsu API Androida to 21.
Od wersji 23.0.0 pakiet SDK do reklam mobilnych Google wymaga, aby wszystkie aplikacje działały na minimalnym poziomie API Androida 21. Aby dostosować poziom interfejsu API, zmień wartość minSdkVersion
w pliku build.gradle
na poziomie aplikacji na 21 lub wyższą.
Usunięte lub zastąpione wycofane metody
API w 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
W podsekcjach poniżej opisujemy zmiany powodujące niezgodność i różnice w działaniu między wersjami 21 i 22 pakietu SDK do reklam mobilnych Google.
Pobieranie wersji pakietu SDK do reklam mobilnych Google za pomocą metody MobileAds.getVersion()
Metoda MobileAds.getVersionString()
została usunięta w wersji 22.0.0 na rzecz MobileAds.getVersion()
.
Nowa metoda zwraca oczekiwany zewnętrzny numer wersji, np.22.0.0
. Więcej informacji o tej zmianie znajdziesz w artykule Korzystanie z nowej metody pakietu SDK do reklam mobilnych Google.getVersion()
Usunięte lub zastąpione metody
W tabeli poniżej znajdziesz szczegółowe informacje o 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 | Ładowarka |
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
W podsekcjach poniżej opisujemy zmiany powodujące niezgodność i różnice w działaniu między wersjami 20 i 21 pakietu SDK do reklam mobilnych Google:
Zaktualizuj parametr minSdkVersion do wartości 19 lub wyższej.
Od wersji 21.0.0 pakiet SDK do reklam mobilnych Google wymaga, aby wszystkie aplikacje działały na minimalnym poziomie API Androida 19. Aby dostosować poziom interfejsu API, zmień wartość minSdkVersion
w pliku kompilacji aplikacji na 19 lub wyższą.
Wymuszanie ścisłej dopuszczalności wartości null
W ramach przygotowań do wymuszania ścisłej dopuszczalności wartości null we wszystkich interfejsach API, które wcześniej nie definiowały dopuszczalności wartości null, dodano adnotacje @NonNull
.
Ta zmiana może spowodować nieprawidłowe działanie aplikacji napisanych w Kotlinie i aplikacji korzystających z platform do sprawdzania wartości null w języku Java, jeśli występują naruszenia bezpieczeństwa wartości null, a wcześniej nie obsługiwały one wartości null
w bezpieczny sposób (patrz dokumentacja Kotlin na temat bezpieczeństwa wartości null).
Usunięcie metody addNetworkExtras()
Metoda addNetworkExtras()
, która przekazuje dodatkowe parametry jako instancję NetworkExtras
do konkretnego adaptera sieci reklamowej, została wycofana w wersji 20.3.0 pakietu SDK i zostanie usunięta w wersji 21.0.0. Zamiast tego użyj metody
addNetworkExtrasBundle()
z tej samej klasy AdRequest.Builder
.
Usuwanie metod określania lokalizacji
W wersji 21.0.0 usuniemy te metody określania lokalizacji:
- Metoda
setLocation(Location location)
w klasieAdRequest.Builder
, która ustawia lokalizację użytkownika na potrzeby kierowania w zapośredniczeniu. - 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 jest ona zdefiniowana przezAdRequest
.
Google nie używa danych o lokalizacji do kierowania reklam. W razie potrzeby używaj interfejsów API innych firm, aby przekazywać informacje do zewnętrznych sieci reklamowych.
Wycofanie interfejsów zdarzeń niestandardowych
Zdarzenia niestandardowe umożliwiają wydawcom korzystającym z zapośredniczenia AdMob skonfigurowanie kaskadowego źródła reklam, które nie jest jednym z obsługiwanych przez AdMob źródeł reklam.
Wszystkie interfejsy zdarzeń niestandardowych zostały wycofane na rzecz klasy Adapter
i interfejsu MediationAdLoadCallback
.
W tabeli poniżej znajdziesz odpowiednią klasę lub interfejs, którego musisz użyć w przypadku każdego interfejsu zdarzenia niestandardowego począwszy od wersji 21.0.0:
Interfejsy w wersji 20.0.0 | v21.0.0 Class/ Interface |
---|---|
CustomEvent | Ładowarka |
CustomEventBanner | |
CustomEventInterstitial | |
CustomEventNative | |
CustomEventBannerListener |
Adapter,
|
CustomEventInterstitialListener | |
CustomEventListener | |
CustomEventNativeListener |
Migracja z wersji 19 do wersji 20
W wersji 20.0.0 wprowadziliśmy wiele zmian powodujących niezgodność. W wersji 19.7.0 wprowadziliśmy wiele nowych interfejsów API oraz wycofaliśmy lub zmieniliśmy nazwy wielu klas w ramach przygotowań do wersji 20.0.0. W tym przewodniku opisujemy najważniejsze zmiany 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, aby korzystać z jednolitej konstrukcji interfejsu API.
Wszystkie interfejsy API formatów pełnoekranowych działają zgodnie z tymi zasadami:
- statyczną metodę wczytywania,
- Podobny mechanizm wywołania zwrotnego lub obsługi wczytywania
- Korzystanie z klasy
FullScreenContentCallback
w przypadku wywołań zwrotnych dotyczących prezentacji
Usunięcie starszej wersji interfejsu RewardedVideoAd API
Nowszy interfejs APIRewardedAd
został wprowadzony w marcu 2019 r. i od ponad 18 miesięcy jest preferowanym interfejsem API do reklam z nagrodą. W porównaniu z starszym interfejsem APIRewardedVideoAd
ma więcej ulepszeń, w tym możliwość wczytywania więcej niż 1 reklamy z nagrodą naraz.
Starszy interfejs API RewardedVideoAd
został usunięty w pakiecie SDK w wersji 20.0.0.
Wycofanie banerów inteligentnych na rzecz banerów adaptacyjnych
Reklamy w inteligentnych banerach zostały wycofane na rzecz adaptacyjnych banerów. Banery adaptacyjne zapewniają większą skuteczność i większą elastyczność w ustawianiu szerokości reklamy. Jeśli wolisz nadal używać banerów o pełnej szerokości, możesz to zrobić za pomocą banera adaptacyjnego, 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) } }
Usuwanie wywołania zwrotnego w aplikacji
onAdLeftApplication
wywołanie zwrotne dla wszystkich formatów reklam zostało usunięte na rzecz ProcessLifecycleOwner
.
Korzystanie z interfejsu API na poziomie systemu operacyjnego powiadamia Cię za każdym razem, gdy użytkownicy opuszczają Twoją aplikację, niezależnie od tego, czy jest to spowodowane interakcją z reklamą.
Pamiętaj, że wywołanie zwrotne onAdLeftApplication
nigdy nie miało być obsługą kliknięć reklamy, a korzystanie z niego do raportowania kliknięć nie dawało dokładnych danych. Na przykład kliknięcie ikony Informacja, które spowodowało uruchomienie zewnętrznej przeglądarki, wywołało wywołanie zwrotne, ale nie zostało zliczone jako kliknięcie.
Zmiany nazw zajęć
W tej tabeli znajdziesz listę konkretnych nazw klas, które zostały zmienione lub usunięte:
- Większość klas związanych z
UnifiedNativeAd
została zmieniona naNativeAd
. - Klasy i widoki
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
iInstreamAd
zostały usunięte. - Wszystkie klasy z prefiksem
Publisher
zostały zastąpione prefiksemAdManager
. - Zmieniono nazwę pakietu
InterstitialAd
.
Klasa 19.5.0 | Klasa 20.0.0 |
---|---|
com.google.android.gms.ads. | com.google.android.gms.ads. |
reward.RewardedVideoAd | rewarded.RewardedAd |
reward.RewardedVideoAdListener | rewarded.RewardedAdLoadCallback 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 |
formats.NativeCustomTemplateAd |
nativead.NativeCustomFormatAd |
MobileAds.Settings | Usunięto |
doubleclick.PublisherAdRequest | admanager.AdManagerAdRequest |
doubleclick.PublisherAdView | admanager.AdManagerAdView |
formats.PublisherAdViewOptions | formats.AdManagerAdViewOptions |
doubleclick.PublisherInterstitialAd | admanager.AdManagerInterstitialAd |
InterstitialAd | interstitial.InterstitialAd |
NativeExpressAdView | Usunięto |
instream.InstreamAd | Usunięto |
mediation.admob.AdMobExtras | Usunięto |
Korelator | Usunięto |
search.SearchAdRequest | Usunięto |
Interfejs AdRequest.TagForUnderAgeOfConsent | Usunięto |
Interfejs AdRequest.MaxAdContentRating | Usunięto |
formats.NativeAppInstallAd | native.NativeAd |
formats.NativeAppInstallAdView | native.NativeAdView |
mediation.NativeAppInstallAdMapper | mediation.UnifiedNativeAdMapper |
formats.NativeContentAd | native.NativeAd |
formats.NativeContentAdView | native.NativeAdView |
mediation.NativeContentAdMapper | mediation.UnifiedNativeAdMapper |
Usunięte lub zastąpione metody
W tabeli poniżej znajdziesz szczegółowe zmiany w wersji 20.0.0:
- Z klasy MobileAds usunęliśmy przestarzałe metody inicjowania.
- Niektóre metody z klasy
AdRequest.Builder()
zostały usunięte lub przeniesione do klasyRequestConfiguration
. - Interfejsy RewardedAd i InterstitialAd API zostały zaktualizowane, aby były zgodne ze wszystkimi formatami pełnoekranowymi.
- 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 |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete |
Identyfikator aplikacji jest teraz ustawiony w pliku AndroidManifest.xml. |
initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
Klasa Settings została wycofana. | |
getRewardedVideo |
Usunięto | Zamiast tego używaj interfejsu RewardedAd API. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
onAdLeftApplication() | Usunięto | Formaty reklam pełnoekranowych używają interfejsu FullscreenContentCallback zamiast AdListener, a w interfejsie FullscreenContentCallback nie ma odpowiedniej metody. Metoda została usunięta z interfejsu AdListener. | |
VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
AdRequest | getGender() | Usunięto | |
getBirthday() | Usunięto | ||
getNetworkExtras() | Usunięto | ||
setManualImpressions |
Usunięto | ||
updateCorrelator() | Usunięto | Zobacz Filtrowanie treści reklam. | |
AdRequest.Builder | setBirthday() | Usunięto | |
setGender() | Usunięto | ||
setIsDesignedForFamilies() | Usunięto | Zobacz przewodnik. | |
addTestDevice() | RequestConfiguration |
Zobacz Włączanie reklam testowych. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Zobacz Filtrowanie treści reklam. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
Obiekt ResponseInfo jest dostępny za pomocą metody AdView , getResponseInfo() .
|
NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | Reklama z nagrodą korzysta teraz z tego samego statycznego podejścia do wczytywania co inne formaty pełnoekranowe. |
loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Usunięto | Wywołanie zwrotne z metody wczytywania statycznego udostępnia już wczytaną reklamę. | |
show(Activity, RewardedAdCallback) | show(Activity, OnUserEarnedRewardListener) | Ta metoda wyświetlania jest zgodna z 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 | new InterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | Reklama pełnoekranowa InterstitialAd korzysta teraz z tego samego statycznego podejścia do wczytywania co inne formaty pełnoekranowe. |
setAdListener() | |||
DynamicHeightSearchAd |
getNetworkExtras() | Usunięto | Klasa NetworkExtras została wycofana. |
AdLoader | forContentAd() | Usunięto | |
forAppInstallAd() | Usunięto | ||
withCorrelator() | Usunięto | ||
getMediationAdapter |
Usunięto |