Ta strona dotyczy migracji w przypadku obecnej i poprzednich wersji.
Migracja z wersji 23 na wersję 24
W podrozdziałach poniżej opisaliśmy zmiany i różnice w zachowaniu między wersją główną 23 a 24 pakietu SDK do reklam mobilnych Google.
Minimalny poziom interfejsu API Androida to 23.
Począwszy od wersji 24.0.0 pakiet SDK do reklam mobilnych Google wymaga, aby wszystkie aplikacje działały na Androidzie w wersji co najmniej 23. Aby dostosować poziom interfejsu API, zmień wartość minSdk
w pliku build.gradle
na poziomie aplikacji na 23 lub wyższy.
Zmiany w optymalizowanej 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 inicjalizacji i wczytywania.
Usunięto zależności firebase-ads i firebase-ads-lite.
Od wersji 24.0.0 wersje pakietu 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 przyjmują parametr orientacji. Zamiast tego używaj metodAppOpenAd.load()
, które nie uwzględniają orientacji. - Usunięto enum
AppOpenAdOrientation
.
Uproszczone wywołanie zwrotne dotyczące nagrody w przypadku adapterów zapośredniczenia
Wersja 24.0.0 dodaje wywołanie zwrotne onUserEarnedReward()
w funkcji MediationRewardedAdCallback
i zastępuje wywołanie onUserEarnedReward(RewardItem)
.
Adaptery pośrednictwa muszą zacząć wywoływać onUserEarnedReward()
, gdy użytkownik zdobędzie nagrodę.
Podczas przekierowywania wywołań zwrotnych z adapterów pośrednictwa wszystkie wersje pakietu SDK do reklam mobilnych Google zwracają nagrodę zdefiniowaną w interfejsie AdMob (OnUserEarnedRewardListener
).
Zajęcia zostały usunięte
Usunęliśmy te zajęcia bez zastępowania ich innymi:
DynamicHeightSearchAdRequest
SearchAdRequest
SearchAdView
Usunięto metody
Usunęliśmy te metody bez zastępowania ich innymi:
Klasa | Metoda |
---|---|
RewardedInterstitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) |
|
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Wycofane metody
Wycofane zostały te metody:
Klasa | Metoda |
---|---|
Karta | loadInterscrollerAd() |
RtbAdapter | loadRtbInterscrollerAd() |
Migracja z wersji 22 na wersję 23
W następnych podrozdziałach opisaliśmy zmiany i różnice w zachowaniu między wersją główną 22 a 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 Androidzie na poziomie API 21 lub wyższym. Aby dostosować poziom interfejsu API, zmień wartość elementu minSdkVersion
w pliku build.gradle
na poziomie aplikacji na 21 lub wyższy.
Usunięcie lub zastąpienie wycofanych metod
Wersja 22.0.0 interfejsu API | 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 wymiany |
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 na wersję 22
W następnych podrozdziałach opisaliśmy zmiany i różnice w zachowaniu między wersją główną 21 a 22 pakietu SDK do reklam mobilnych Google.
Uzyskiwanie 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 metody MobileAds.getVersion()
.
Nowa metoda zwraca oczekiwany zewnętrzny numer wersji, np. 22.0.0
. Więcej informacji o tej zmianie znajdziesz w artykule Używanie nowej metody pakietu SDK do reklam mobilnych GooglegetVersion()
.
Usuwane lub zastępowane metody
W tabeli poniżej wymieniono zmiany 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 na wersję 21
W podrozdziałach poniżej opisaliśmy zmiany i różnice w zachowaniu między główną wersją 20 a 21 pakietu SDK do reklam mobilnych Google:
Zaktualizuj parametr minSdkVersion do wersji 19 lub nowszej.
Od wersji 21.0.0 pakiet SDK do reklam mobilnych Google wymaga, aby wszystkie aplikacje działały na poziomie API 19 lub wyższym. Aby dostosować poziom interfejsu API, zmień wartość minSdkVersion
w pliku kompilacji aplikacji na 19 lub wyższą.
Wymuś ścisłe ustawienie wartości null
W ramach przygotowań do wprowadzenia ścisłej zasady możliwości wartości null dodano adnotacje @NonNull
we wszystkich interfejsach API, które wcześniej nie definiowały jednoznacznie możliwości wartości null.
Ta zmiana może spowodować nieprawidłowe działanie aplikacji w Kotlinie i aplikacji, które korzystają z ramek sprawdzania wartości null w Java, jeśli wystąpią naruszenia zasad bezpieczeństwa null, a wartości null
nie były wcześniej obsługiwane w bezpieczny sposób (zobacz dokumentację Kotlina na temat bezpieczeństwa 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 SDK 20.3.0 i zostanie usunięta w wersji 21.0.0. Zamiast tego użyj metody addNetworkExtrasBundle()
z tej samej klasy AdRequest.Builder
.
Usuwanie metod lokalizacji
W wersji 21.0.0 zostaną usunięte te metody określania lokalizacji:
- Metoda
setLocation(Location location)
w klasieAdRequest.Builder
, która ustawia lokalizację użytkownika na potrzeby kierowania zapośredniczenia. - Metoda
getLocation()
w klasieAdRequest
, która zwraca informacje o kierowaniu na lokalizację użytkownika przekazane wcześniej metodziesetLocation(Location location)
. - Metoda
getLocation()
w klasieMediationAdConfiguration
, która zwraca lokalizację użytkownika, jeśli została zdefiniowana przezAdRequest
.
Dane o lokalizacji nie są używane przez Google do kierowania reklam. W razie potrzeby należy używać 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 obsługiwane przez AdMob.
Wszystkie interfejsy custom
event
są wycofywane na rzecz interfejsów Adapter
class i
MediationAdLoadCallback
interface.
W tabeli poniżej znajdziesz odpowiednią klasę lub interfejs, których musisz używać w przypadku każdego interfejsu zdarzenia niestandardowego od wersji 21.0.0:
Interfejsy w wersji 20.0.0 | Klasa/ interfejs w wersji 21.0.0 |
---|---|
CustomEvent | Ładowarka |
CustomEventBanner | |
CustomEventInterstitial | |
CustomEventNative | |
CustomEventBannerListener |
Adapter,
|
CustomEventInterstitialListener | |
CustomEventListener | |
CustomEventNativeListener |
Migracja z wersji 19 na wersję 20
W wersji 20.0.0 jest wiele zmian powodujących niezgodność. Wersja 19.7.0 zawiera wiele nowych interfejsów API oraz wycofane lub przemianowane klasy w ramach przygotowań do wersji 20.0.0. Ten przewodnik zawiera najważniejsze zmiany w wersji 20.0.0.
Aktualizacje interfejsu API formatu pełnoekranowego
Począwszy od wersji 20.0.0 reklamy pełnoekranowe, reklamy z nagrodą, reklamy pełnoekranowe z nagrodą i reklamy wyświetlane przy otwarciu aplikacji są standaryzowane, aby zachować spójność interfejsu API.
Wszystkie interfejsy API formatu pełnoekranowego działają zgodnie z tymi zasadami:
- Metoda wczytywania statycznego
- podobny mechanizm wywołania ładowania lub mechanizm obsługi;
- Używanie klasy
FullScreenContentCallback
do wywołań zwrotnych dotyczących prezentacji
Usunięcie starszego interfejsu API RewardedVideoAd
Nowy interfejs RewardedAd
został wprowadzony w marcu 2019 r. i od ponad 18 miesięcy jest preferowanym interfejsem API do wyświetlania reklam z nagrodą. Wprowadziliśmy w nim więcej ulepszeń w porównaniu z uprzednią wersją interfejsu API RewardedVideoAd
, m.in. możliwość wczytania więcej niż 1 reklamy z nagrodą naraz.
Stary interfejs API RewardedVideoAd
został usunięty z pakietu SDK w wersji 20.0.0.
wycofanie banerów inteligentnych na rzecz banerów adaptacyjnych
Inteligentne banery zostały wycofane na rzecz adaptacyjnych banerów. Banery adaptacyjne zapewniają większą skuteczność i większą elastyczność w ustalaniu szerokości reklamy. Jeśli wolisz nadal używać banerów o pełnej szerokości, możesz to zrobić, korzystając z 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) } }
Leave application callback removal
W przypadku wszystkich formatów reklam został usunięty wywołanie zwrotne onAdLeftApplication
na rzecz wywołania zwrotnego ProcessLifecycleOwner
.
Korzystanie z interfejsu API na poziomie systemu operacyjnego powoduje, że otrzymujesz powiadomienia o każdej próbie opuszczenia aplikacji przez użytkowników, niezależnie od tego, czy jest ona spowodowana interakcją z reklamą.
Pamiętaj, że funkcja wywołania zwrotnego onAdLeftApplication
nigdy nie miała być obsługi z kliknięciem reklamy, a używanie jej do zgłaszania kliknięć nie powoduje gromadzenia 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.
Zmiana nazwy zajęć
W tabeli poniżej znajdziesz listę nazw klas, które zostały zmienione lub usunięte:
- Większość klas związanych z
UnifiedNativeAd
została przemianowana naNativeAd
. - Klasy i widoki
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
iInstreamAd
zostały usunięte. - Wszystkie klasy z preiksem
Publisher
zostały zastąpione preiksemAdManager
. - Nazwa pakietu
InterstitialAd
została zmieniona.
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 |
Metody usunięte/zastąpione
W poniższej tabeli wymieniono zmiany w wersji 20.0.0:
- Z klasy MobileAds zostały usunięte przestarzałe metody inicjowania.
- Niektóre metody z klasy
AdRequest.Builder()
zostały usunięte lub przeniesione do klasyRequestConfiguration
. - Interfejsy API reklam z nagrodą i reklam pełnoekranowych zostały zaktualizowane, aby pasowały do wszystkich formatów pełnoekranowych.
- Funkcje korelacji zostały usunięte.
Klasa | Wersja 19.5.0 interfejsu API | 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żyj interfejsu RewardedAd API. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
onAdLeftApplication() | Usunięto | Formaty reklam pełnoekranowych używają metody FullscreenContentCallback zamiast AdListener, a ta metoda nie ma odpowiednika. Metoda została usunięta z AdListener. | |
VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
AdRequest | getGender() | Usunięto | |
getBirthday() | Usunięto | ||
getNetworkExtras() | Usunięto | ||
setManualImpressions |
Usunięto | ||
updateCorrelator() | Usunięto | Zapoznaj się z artykułem Filtrowanie treści reklam. | |
AdRequest.Builder | setBirthday() | Usunięto | |
setGender() | Usunięto | ||
setIsDesignedForFamilies() | Usunięto | Zapoznaj się z tym przewodnikiem. | |
addTestDevice() | RequestConfiguration |
Zobacz Włączanie reklam testowych. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Zapoznaj się z artykułem 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) | Reklamy z nagrodą są teraz wczytywane w sposób statyczny tak samo jak inne formaty pełnoekranowe. |
loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Usunięto | Zwróć uwagę, że wywołanie zwrotne z metody ładowania statycznego zawiera reklamę, która została już wczytana. | |
show(Activity, RewardedAdCallback) | show(Activity, OnUserEarnedRewardListener) | Ta metoda wyświetlania jest zgodna z szerszym 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) | InterstitialAd korzysta teraz z tego samego podejścia do wczytywania statycznych plików 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 |