Migracja pakietów SDK

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 klasie AdRequest.Builder, która ustawia lokalizację użytkownika na potrzeby kierowania w ramach zapośredniczenia.
  • Metoda getLocation() w klasie AdRequest, która zwraca informacje o kierowaniu na lokalizację użytkownika przekazane wcześniej do metody setLocation(Location location).
  • Metoda getLocation() w klasie MediationAdConfiguration, która zwraca lokalizację użytkownika, jeśli została określona przez AdRequest.

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, MediationAdLoadCallback
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 na NativeAd.
  • Zajęcia i widoki MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd i InstreamAd zostały usunięte.
  • Wszystkie klasy z prefiksem Publisher zostały zastąpione prefiksem AdManager.
  • 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.OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
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 klasy RequestConfiguration.
  • 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 getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getscapeBannerAdSizeWithWidth() getscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds zainicjuj(kontekst, ciąg znaków) MobileAds.initialize(Context, OnInitializationCompleteListener) Identyfikator aplikacji jest teraz ustawiony w pliku AndroidManifest.xml.
zainicjuj(Context, String, MobileAds.Settings) zainicjuj(Context, OnInitializationCompleteListener) Klasa ustawień została wycofana.
getRewardedVideoAdInstance() Usunięta Zamiast tego użyj interfejsu RewardedAd API.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
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świetleniaWłączone() 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.Builder.setTestDeviceIds() Patrz Włączanie reklam testowych.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() Zobacz Filtrowanie treści reklamy.
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() 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 onRewardedAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
RewardedInterstitialAdLoadWywołanie zwrotne onRewardedInterstitialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdLoaded(RewardedInterstitialAd) onAdLoaded(RewardedInterstitialAd)
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
getMediationAdapterClassName() Usunięta