Ta strona zawiera informacje na temat migracji obecnej i poprzednich 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, aby wszystkie aplikacje korzystały z interfejsu API Androida na poziomie 21. Aby dostosować poziom interfejsu API, zmień wartość minSdkVersion
w pliku build.gradle
na poziomie aplikacji na 21 lub wyższą.
Można połączyć w łańcuch AdManagerAdRequest.Builder
metod odziedziczonych z klasy nadrzędnej
W wersji 23.0.0 metody AdManagerAdRequest.Builder
odziedziczone z elementu nadrzędnego można połączyć w łańcuch, aby utworzyć AdManagerAdRequest
za pomocą jednego wywołania:
Java
AdManagerAdRequest request = new AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build(); // Builds an AdManagerAdRequest.
Kotlin
var request = AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build() // Builds an AdManagerAdRequest.
Wycofane metody zostały usunięte/zastąpione
Interfejs 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
Użyj funkcji MobileAds.getVersion(), aby uzyskać wersję pakietu SDK do reklam mobilnych Google
W wersji 22.0.0 metoda MobileAds.getVersionString()
została usunięta na rzecz 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 Użycie nowej metody getVersion() w pakiecie SDK do reklam mobilnych Google.
Usunięcie wycofanego formatu NativeCustomFormatAd.getVideoMediaView()
W wersji 21 pakiet SDK do reklam mobilnych Google udostępniał metodę NativeCustomFormatAd.getVideoMediaView()
do pobierania zasobów multimedialnych na potrzeby niestandardowego formatu reklamy natywnej.
Od wersji 22 tworzysz własny MediaView
i ustawiasz jego zawartość multimedialną, a potem używasz MediaContent.getVideoController()
do sterowania odtwarzaniem filmu.
v22
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the id media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); MediaContent mediaContent = ad.getMediaContent(); if (mediaContent != null && mediaContent.hasVideoContent()) { // Create a MediaView and set its media content. MediaView mediaView = new MediaView(mediaPlaceholder.getContext()); mediaView.setMediaContent(mediaContent); mediaPlaceholder.addView(mediaView); } }
v21
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the id media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); VideoController videoController = ad.getVideoController(); if (videoController.hasVideoContent()) { // Add the media view provided by the native ad. mediaPlaceholder.addView(ad.getVideoMediaView()); } }
Więcej informacji znajdziesz w przewodniku po niestandardowych reklamach natywnych.
Usunięte lub zastąpione metody
W tabeli poniżej znajdziesz listę konkretnych zmian wprowadzonych 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
Zaktualizuj parametr minSdkVersion do wersji 19 lub nowszej
Od wersji 21.0.0 pakiet SDK do reklam mobilnych Google wymaga, aby wszystkie aplikacje korzystały z interfejsu API Androida na poziomie 19. Aby dostosować poziom interfejsu API, zmień wartość minSdkVersion
w pliku kompilacji aplikacji na 19 lub wyższą.
Egzekwuj ścisłą dopuszczalność wartości null
W ramach przygotowań do wymuszania ścisłej dopuszczalności wartości null do wszystkich interfejsów API, które wcześniej nie definiowały jednoznacznie wartości null, dodawane są adnotacje @NonNull
.
Ta zmiana może zakłócić działanie aplikacji i aplikacji Kotlin, które korzystają z platformy sprawdzania null w języku Java, jeśli wystąpiły zerowe naruszenia bezpieczeństwa, a wartości null
nie były wcześniej obsługiwane w bezpieczny sposób (zapoznaj się z dokumentacją Kotlin na temat Null-safety).
Usunięto metodę addNetworkExtras()
Metoda addNetworkExtras()
, która przekazuje dodatkowe parametry jako wystąpienie NetworkExtras
do określonego adaptera sieci reklamowej, została wycofana z pakietu SDK w wersji 20.3.0, a w wersji 21.0.0 zostanie usunięta. 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 zdefiniowana w zasadzieAdRequest
.
Google nie używa danych o lokalizacji do kierowania reklam. Do przekazania danych do zewnętrznych sieci reklamowych należy w razie potrzeby użyć interfejsów API innych firm.
Wycofanie interfejsów zdarzeń niestandardowych
Zdarzenia niestandardowe umożliwiają wydawcom korzystanie zAdMob do konfigurowania kaskadowego źródła reklam, które nie jest jednym z obsługiwanych przez Ad Managerźródeł reklam.
Wszystkie interfejsy zdarzeń niestandardowych zostały wycofane i zastąpione klasą Adapter
oraz interfejsem MediationAdLoadCallback
.
Tabela poniżej zawiera listę odpowiednich klas lub interfejsów, których należy używać w przypadku każdego interfejsu zdarzeń niestandardowych, począwszy od wersji 21.0.0:
Interfejsy v20.0.0 | Klasa/ interfejs w wersji 21.0.0 |
---|---|
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 i w ramach przygotowań do wersji 20.0.0 wycofaliśmy lub zmieniła nazwę wielu klas. W tym przewodniku opisujemy główne 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ą i reklam z nagrodą oraz reklam wyświetlanych przy otwarciu aplikacji są ustandaryzowane tak, aby były zgodne z spójnym interfejsem API.
Wszystkie interfejsy API w formacie pełnoekranowym opierają się na tych zasadach:
- Metoda wczytywania statycznego
- Podobny mechanizm wywołania zwrotnego lub obsługi wczytywania
- Używanie klasy
FullScreenContentCallback
w przypadku wywołań zwrotnych prezentacji
Usunięcie starszej wersji interfejsu Nagrody VideoAd API
Nowszy interfejs API RewardedAd
został po raz pierwszy wprowadzony w marcu 2019 roku i od ponad 18 miesięcy jest preferowanym interfejsem YouTube z nagrodą. W porównaniu do starszej wersji interfejsu API RewardedVideoAd
zawiera on więcej ulepszeń, w tym możliwość wczytywania więcej niż 1 reklamy z nagrodą jednocześnie.
Starsza wersja interfejsu API RewardedVideoAd
została usunięta z pakietu SDK w wersji 20.0.0.
Wycofanie banerów inteligentnych i zastąpienie banerem adaptacyjnym
Banery inteligentne zostały wycofane i zastąpione banerami adaptacyjnymi. Banery adaptacyjne mają wysoką skuteczność i dają większą elastyczność w ustawianiu szerokości reklamy. 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) } }
Opuść usuwanie wywołania zwrotnego aplikacji
Wywołanie zwrotne onAdLeftApplication
dla wszystkich formatów reklam zostało usunięte i zastąpione ProcessLifecycleOwner
.
Korzystanie z interfejsu API na poziomie systemu operacyjnego powiadomi Cię za każdym razem, gdy użytkownik opuści 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 do obsługi kliknięć reklamy, a wykorzystanie tego wywołania zwrotnego do raportowania kliknięć nie pozwoliło uzyskać dokładnych danych. Na przykład kliknięcie ikony Informacja, które uruchomiło przeglądarkę zewnętrzną, wywołuje wywołanie zwrotne, ale nie jest liczone jako kliknięcie.
Zmiana nazw zajęć
W tabeli poniżej znajdziesz nazwy konkretnych klas, które zostały zmienione lub usunięte. Podsumowując:
- Większość zajęć związanych z
UnifiedNativeAd
została zmieniona naNativeAd
. - Klasy i widoki
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
orazInstreamAd
zostały usunięte. - Wszystkie klasy z prefiksem
Publisher
zostały zastąpione prefiksemAdManager
. - Nazwa pakietu
InterstitialAd
uległa zmianie.
19.5.0 Klasa | Klasa 20.0.0 |
---|---|
com.google.android.gms.ads. | com.google.android.gms.ads. |
reward.RewardedVideoAd | rewarded.RewardedAd |
reward.RewardedVideoAdListener | z nagrodą.NagrodaAdLoadCallback 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 |
formatted.NativeCustomTemplateAd |
natywnead.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 tabeli poniżej znajdziesz listę konkretnych zmian wprowadzonych 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
. - Interfejsy API reklam z nagrodą i pełnoekranowych reklam zostały zaktualizowane, aby zapewnić zgodność 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 | Notatki |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getPortraitBanner |
getscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | inicjuj(kontekst, ciąg) | MobileAds.initialize(Context, OnInitializationComplete |
Identyfikator aplikacji jest teraz ustawiony w pliku AndroidManifest.xml. |
inicjuj(Kontekst, Ciąg, Reklamy mobilne.Ustawienia) | inicjuj(Context, OnInitializationComplete |
Klasa ustawień została wycofana. | |
getNagrodyVideo |
Usunięto | Zamiast tego użyj interfejsu API z nagrodą. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
onAdLeftApplication() | Usunięto | W przypadku formatów reklam pełnoekranowych zamiast AdListener używana jest metoda FullscreenContentCallback. W przypadku funkcji FullscreenContentCallback nie ma takiej metody. Usunęliśmy tę metodę z AdListener. | |
VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
PublisherAdRequest | getGender() | Usunięto | |
getBirthday() | Usunięto | ||
getNetworkExtras() | Usunięto | ||
setManualImpressions |
Usunięto | ||
updateCorrelator() | Usunięto | Zapoznaj się z sekcją Filtrowanie treści reklamy. | |
PublisherAdRequest.Budowa | setBirthday() | Usunięto | |
setGender() | Usunięto | ||
setIsDesignedForFamilies() | Usunięto | Zobacz przewodnik. | |
addTestDevice() | RequestConfiguration |
Przeczytaj artykuł Włączanie reklam testowych. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Zapoznaj się z sekcją 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, NagrodaAdLoadCallback) | YieldAd.load(Kontekst, Ciąg, AdRequest, NagrodaAdLoadCallback) | Reklamy z nagrodą korzystają teraz z tej samej metody wczytywania statycznego co inne formaty pełnoekranowe. |
loadAd(PublisherAdRequest, NagrodaAdLoadCallback) | YieldAd.load(Kontekst, Ciąg, AdManagerAdRequest, NagrodaAdLoadCallback) | ||
isLoaded() | Usunięto | Wywołanie zwrotne z metody wczytywania statycznego dostarcza już załadowaną reklamę. | |
show(Aktywność, Wywołanie reklamy z nagrodą) | show(Activity, OnUserRevenueed RewardsListener) | Ta metoda wyświetlania jest zgodna z szerszym podejściem do formatu pełnoekranowego. | |
RewardedAdLoadCallback | on RewardsAd |
onAd |
|
onAudienceAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
Nagrody pełnoekranowejAdLoad |
onNagrody pełnoekranowej |
onAd |
|
onReklama pełnoekranowa z nagrodą |
onAd |
||
onMarketpełnoekranowyAd |
onAd |
||
PublisherInterstitialAd | nowy PublisherInterstitialAd() | fullAd.load(Context, String, AdRequest, pełnoekranowyAdLoadCallback) | Reklama pełnoekranowa korzysta teraz z tej samej metody wczytywania statycznego co inne formaty pełnoekranowe. |
setAdListener() | |||
Żądanie DynamicHeightSearchAd |
getNetworkExtras() | Usunięto | Klasa NetworkExtras została wycofana. |
AdLoader | forContentAd() | Usunięto | |
forAppInstallAd() | Usunięto | ||
withCorrelator() | Usunięto | ||
getMediationAdapter |
Usunięto |