Ta strona dotyczy migracji w przypadku obecnej i poprzednich wersji.
Migracja z wersji 22 na wersję 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ższy.
Metody AdManagerAdRequest.Builder
dziedziczone z superklasy mogą być łączone.
W wersji 23.0.0 metody odziedziczone od rodzica AdManagerAdRequest.Builder
mogą być łączone ze sobą, aby tworzyć AdManagerAdRequest
za pomocą pojedynczego 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
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
Uzyskiwanie wersji pakietu SDK do reklam mobilnych Google za pomocą metody MobileAds.getVersion()
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 Korzystanie z nowej metody getVersion() pakietu SDK do reklam mobilnych Google.
Usunięcie wycofanego formatu NativeCustomFormatAd.getVideoMediaView()
W wersji 21 pakietu SDK do reklam mobilnych Google udostępniliśmy metodę NativeCustomFormatAd.getVideoMediaView()
, która umożliwia pobieranie zasobu multimedialnego w przypadku natywnego formatu reklamy niestandardowej.
Od wersji 22 możesz tworzyć własne MediaView
i ustawiać ich zawartość multimedialną, a także korzystać z MediaContent.getVideoController()
, aby uzyskać kontrolę nad filmem.
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.
Usuwane lub zastępowane metody
W tabeli poniżej znajdziesz listę konkretnych zmian wprowadzonych w wersji 22.0.0.
v21.0.0 | 22.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
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ą.
Wymuś ścisłe ustawienie 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ęcie metody addNetworkExtras()
Metoda addNetworkExtras()
, która przekazuje dodatkowe parametry jako wystąpienie NetworkExtras
do określonego adaptera sieci reklamowej, została wycofana z pakietu SDK 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
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 w ramach 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 w zasadzieAdRequest
.
Dane o lokalizacji nie są używane przez Google 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 korzystającym z skonfigurowanie kaskadowego źródła reklam, które nie jest Ad Managerjednym z obsługiwanych źródeł reklam.
Wszystkie interfejsy custom
event
są wycofywane na rzecz interfejsów Adapter
class i
MediationAdLoadCallback
interface.
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 na wersję 20
W wersji 20.0.0 wprowadziliśmy wiele zmian powodujących niezgodność. W wersji 19.7.0 udostępniliśmy wiele nowych interfejsów API oraz wycofaliśmy lub zmieniliśmy nazwy wielu klas 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
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 AudienceVideoAd API
Nowy interfejs
RewardedAd
API 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.
Starszy interfejs API RewardedVideoAd
został usunięty 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 wolisz nadal używać banerów o pełnej szerokości, możesz to zrobić, korzystając z 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
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ć elementem obsługi kliknięcia reklamy, a używanie jej do zgłaszania kliknięć nie zapewnia 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 nazwy zajęć
W tabeli poniżej znajdziesz nazwy konkretnych klas, które zostały zmienione lub usunięte. Podsumowując:
- 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 prefiksem
Publisher
zostały zastąpione prefiksemAdManager
. - Nazwa pakietu
InterstitialAd
uległa zmianie.
Klasa 19.5.0 | 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 |
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 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 | API w wersji 20.0.0 | Uwagi |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | inicjuj(kontekst, ciąg) | MobileAds.initialize(Context, OnInitializationComplete |
Identyfikator aplikacji jest teraz ustawiony w pliku AndroidManifest.xml. |
initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
Klasa ustawień została wycofana. | |
getRewardedVideo |
Usunięto | Zamiast tego użyj interfejsu API z nagrodą. | |
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() | |
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.Builder | 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, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | Reklamy z nagrodą korzystają teraz z tej samej metody wczytywania statycznego co inne formaty pełnoekranowe. |
loadAd(PublisherAdRequest, NagrodaAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Usunięto | Wywołanie zwrotne z metody wczytywania statycznego dostarcza już załadowaną reklamę. | |
show(aktywność, wywołanie zwrotne reklamy z nagrodą) | show(Activity, OnUserRevenueed RewardsListener) | 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 |
||
PublisherInterstitialAd | new PublisherInterstitialAd() | pełnoekranowyAd.load(Context, String, AdRequest, pełnoekranowyAdLoadCallback) | InterstitialAd używa teraz tego samego podejścia do ładowania 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 |