Migracja SDK

Ta strona obejmuje migracje dla bieżącej i poprzedniej wersji.

Migracja do SDK v21

To avoid potential build failures with version 21.0.0 of the Google Mobile Ads SDK (slated for an early 2022 release), follow the checks and guidelines introduced in this guide.

Update minSdkVersion to 19 or higher

Starting from version 21.0.0, the Google Mobile Ads SDK requires all apps to be on a minimum Android API level 19 to run. To adjust the API level, change the value of minSdkVersion in your app’s build file to 19 or higher.

Enforce strict nullability

In preparation for enforcing strict nullability, @NonNull annotations are added in all the APIs that previously did not explicitly define nullability.

This change may break the Kotlin apps and apps that use Java null checking frameworks if there are null safety violations and did not previously handle null values in a safe way (see the Kotlin documentation on Null-safety ).

Removal of addNetworkExtras() method

The addNetworkExtras() method that passes extra parameters as a NetworkExtras instance to a specific ad network adapter was deprecated in SDK version 20.3.0, and will be removed in version 21.0.0. Use the addNetworkExtrasBundle() method from the same AdRequest.Builder class instead.

Removal of location methods

The following location methods will be removed in version 21.0.0:

  • The setLocation(Location location) method in the AdRequest.Builder class that sets the user's location for mediation targeting purposes.
  • The getLocation() method in the AdRequest class that returns the user's location targeting information previously passed to the setLocation(Location location) method.
  • The getLocation() method in the MediationAdConfiguration class that returns the location of the user, if defined by the AdRequest.

The location data is not used by Google to target ads. You should use third-party APIs to provide the information to third-party ad networks if required.

Custom event interfaces deprecation

Custom events enable publishers using AdMob mediation to add waterfall mediation for an ad network that isn't one of AdMob's supported ad networks.

All the custom event interfaces are deprecated in favor of the Adapter class and MediationAdLoadCallback interface.

The table below lists the corresponding class or interface that should be used for each custom event interface starting from version 21.0.0:

v20.0.0 Interfaces v21.0.0 Class/ Interface
CustomEvent Adapter
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adapter, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Migracja do SDK v20

W wersji 20.0.0 pojawi się wiele przełomowych zmian. Wersja 19.7.0 wprowadziła wiele nowych interfejsów API i przestarzała lub zmieniła nazwy wielu klas w ramach przygotowań do wersji 20.0.0. Ten przewodnik przedstawia główne zmiany wprowadzone w wersji 19.7.0, a także to, co nadejdzie w wersji 20.0.0 (początek 2021 r.).

Aktualizacje interfejsu API w formacie pełnoekranowym

Począwszy od wersji 20.0.0 formaty reklam pełnoekranowych, reklam pełnoekranowych z nagrodą, reklam pełnoekranowych z nagrodą i otwartych aplikacji są ustandaryzowane, aby były zgodne ze spójnym projektem interfejsu API.

Wszystkie pełnoekranowe interfejsy API wykorzystują następujące zasady:

  • Metoda obciążenia statycznego
  • Podobny mechanizm wywołania zwrotnego lub obsługi ładowania
  • Poleganie na klasie FullScreenContentCallback w przypadku wywołań zwrotnych prezentacji

Usunięcie starszego interfejsu RewardedVideoAd API

Nowszy interfejs API RewardedAd został wprowadzony po raz pierwszy w marcu 2019 r. i od ponad 18 miesięcy jest preferowanym interfejsem API z nagrodami. Wprowadzono więcej ulepszeń w porównaniu ze starszym interfejsem RewardedVideoAd API, w tym możliwość ładowania więcej niż jednej reklamy z nagrodą naraz.

Starszy interfejs RewardedVideoAd API został usunięty z pakietu SDK w wersji 20.0.0.

Wycofanie inteligentnych banerów na rzecz banerów adaptacyjnych

Inteligentne banery reklamowe są przestarzałe na rzecz adaptacyjnych banerów reklamowych. Banery adaptacyjne zapewniają doskonałą wydajność i większą elastyczność w ustawianiu szerokości reklamy. Jeśli wolisz nadal używać banerów o pełnej szerokości, nadal możesz to zrobić za pomocą banera adaptacyjnego, jak pokazano w poniższym fragmencie kodu:

Jawa

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)
    }
}

Pozostaw usuwanie wywołania zwrotnego aplikacji

Wywołanie zwrotne onAdLeftApplication dla wszystkich formatów reklam zostało usunięte na rzecz ProcessLifecycleOwner . Korzystanie z interfejsu API na poziomie systemu operacyjnego powiadamia o każdym opuszczeniu aplikacji przez użytkownika, niezależnie od tego, czy jest to spowodowane interakcją z reklamą.

Pamiętaj, że wywołanie zwrotne onAdLeftApplication nigdy nie miało służyć do obsługi kliknięć reklam, a korzystanie z niego w celu raportowania kliknięć nie dało dokładnych danych. Na przykład kliknięcie ikony Informacja, która uruchomiła zewnętrzną przeglądarkę, wywołało wywołanie zwrotne, ale nie zostało zaliczone jako kliknięcie.

Zmiana nazw klas

Poniższa tabela zawiera listę konkretnych nazw klas, które zostały zmienione lub usunięte. W podsumowaniu:

  • Większość klas związanych z UnifiedNativeAd została zmieniona na NativeAd .
  • Klasy i widoki MobileAds.Settings , NativeExpressAdView , NativeAppInstallAd , NativeContentAd i InstreamAd zostały usunięte.
  • Wszystkie klasy z prefiksem Publisher zostały zastąpione prefiksem AdManager .
  • Zmieniła się nazwa pakietu InterstitialAd .
19.5.0 Klasa 20.0.0 Klasa
com.google.android.gms.ads. com.google.android.gms.ads.
nagroda.RewardedVideoAd award.RewardedAd
award.RewardedVideoAdListener award.RewardedAdLoadCallback i FullScreenContentCallback
nagroda.RewardItem award.RewardItem
award.RewardedAdCallback OnUserEarnedRewardListener
formats.UnifiedNativeAdView nativead.NativeAdView
formaty.UnifiedNativeAd nativead.NativeAd
formats.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
formaty.WyboryWidok nativead.AdChoicesView
formaty.Reklama natywna.Informacje o wyborach nativead.NativeAd.AdChoicesInfo
formaty.MediaView nativead.MediaView
formaty.NativeAdViewHolder nativead.NativeAdViewHolder
formaty.NativeAdOptions nativead.NativeAdOptions
formaty.NativeCustomTemplateAd nativead.NativeCustomFormatAd
formats.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd .OnCustomFormatAdLoadedListener
Ustawienia reklam mobilnych REMOVED
doubleclick.Reklama wydawcy admanager.AdManagerAdRequest
doubleclick.WydawcaAdView admanager.AdManagerAdView
formaty.WydawcyAdViewOptions formaty.AdManagerAdViewOptions
doubleclick.WydawcaReklama pełnoekranowa admanager.AdManagerReklama pełnoekranowa
Reklama pełnoekranowa interstitial.Reklama pełnoekranowa
NativeExpressAdView REMOVED
Instream.InstreamAd REMOVED
mediation.admob.AdMobExtras REMOVED
Korelator REMOVED
search.RequestRequest REMOVED
Interfejs AdRequest.TagForUnderAgeOfConsent REMOVED
Interfejs AdRequest.MaxAdContentRating REMOVED
formaty.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formaty.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

Usunięte/zamienione metody

Poniższa tabela zawiera szczegółowe zmiany w wersji 20.0.0. W podsumowaniu:

  • Nieaktualne metody inicjalizacji zostały usunięte z klasy MobileAds.
  • Niektóre metody z klasy AdRequest.Builder() zostały usunięte lub przeniesione do klasy RequestConfiguration .
  • Interfejsy API RewardedAd i InterstitialAd zostały zaktualizowane, aby były zgodne ze wszystkimi formatami pełnoekranowymi.
  • Funkcje korelatora zostały usunięte.
Klasa v19.5.0 API v20.0.0 API Uwagi
Rozmiar reklamy getPortraitBanner Rozmiar reklamy z szerokością() getPortraitAnchored AdaptiveBannerAdSize()
Pobierz rozmiar reklamy baneru krajobrazowego z szerokością() getLandscapeAnchored AdaptiveBannerAdSize()
getCurrentOrientation BannerAdSizeWithWidth() getCurrentOrientationAnchored AdaptiveBannerAdSize()
Reklamy mobilne zainicjuj (kontekst, ciąg) MobileAds.initialize(Kontekst, OnInitializationComplete Listener) Identyfikator aplikacji jest teraz ustawiony w AndroidManifest.xml.
zainicjuj (kontekst, ciąg, MobileAds.Settings) Initialize (kontekst, OnInitializationComplete Listener) Klasa Settings została przestarzała.
getRewardedVideo AdInstance() REMOVED Zamiast tego użyj interfejsu RewardedAd API.
Odbiornik reklam przy nieudanym wczytaniu reklamy (int) OnAd FailedToLoad(LoadAdError)
w aplikacji po lewej stronie() REMOVED Formaty reklam pełnoekranowych używają FullscreenContentCallback zamiast AdListener i nie ma równoważnej metody w FullscreenContentCallback. Metoda została usunięta z AdListener.
Kontroler wideo pobierzWspółczynnikAspektu() MediaContent.getAspectRatio()
AdRequest pobierz płeć() REMOVED
pobierzUrodziny() REMOVED
pobierzDodatkiSieci() REMOVED
setManualImpressions Enabled() REMOVED
aktualizacjaCorrelator() REMOVED Zobacz Filtrowanie treści reklam .
AdRequest.Builder setBirthday() REMOVED
ustaw płeć() REMOVED
setJestPrzeznaczonyDlaRodzin() REMOVED Zobacz przewodnik .
dodajUrządzenieTestowe() Konfiguracja żądania .Builder .setTestDeviceIds() Zobacz Włączanie reklam testowych .
tagDlaDzieckaUkierunkowanegoLeczenia() Konfiguracja żądania .Builder.setTagFor ChildDirectedTreatment() Zobacz Filtrowanie treści reklam .
setTagFor UnderAgeOfConsent() Konfiguracja żądania .Builder.setTagFor UnderAgeOfConsent()
setMaxAdContentRating() Konfiguracja żądania .Builder .setMaxAdContentRating()
Widok reklamy pobierzAdapterMediacji NazwaKlasy() ResponseInfo .getMediationAdapter NazwaKlasy() Obiekt ResponseInfo jest teraz dostępny za pośrednictwem metody AdView getResponseInfo().
Opcje reklamy natywnej setImageOrientation() setMediaAspectRatio()
getImageOrientation pobierz WspółczynnikAspektuMedia()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) RewardedAd używa teraz tego samego podejścia do ładowania statycznego, co inne formaty pełnoekranowe.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Kontekst, Ciąg, AdManagerAdRequest, RewardedAdLoadCallback)
jest załadowana() REMOVED Wywołanie zwrotne z metody ładowania statycznego zapewnia reklamę, która jest już załadowana.
show(Aktywność, RewardedAdCallback) show(Aktywność, OnUserEarnedRewardListener) Ta metoda pokazu jest zgodna z szerszym podejściem do formatu pełnoekranowego.
RewardedAdLoad Callback onRewardedAd FailedToLoad(int) OnAd FailedToLoad(LoadAdError)
onRewardedAd FailedToLoad(LoadAdError) OnAd FailedToLoad(LoadAdError)
po wczytaniu reklamy nagrodzonej() po załadowaniu reklamy (reklama z nagrodą)
AppOpenAdLoadCallback onAppOpenAd FailedToLoad(int) OnAd FailedToLoad(LoadAdError)
onAppOpenAd FailedToLoad(LoadAdError) OnAd FailedToLoad(LoadAdError)
OnAppOpenAd załadowany (AppOpenAd) w adLoaded (AppOpenAd)
RewardedInterstitialAdLoad Callback onRewardedReklama pełnoekranowa FailedToLoad(int) OnAd FailedToLoad(LoadAdError)
onRewardedReklama pełnoekranowa FailedToLoad(LoadAdError) OnAd FailedToLoad(LoadAdError)
OnRewardedInterstitialAd Loaded(RewardedInterstitialAd) po załadowaniu reklamy (rewardedinterstitialad)
InterstitialAd nowy InterstitialAd() InterstitialAd.load(Kontekst, Ciąg, Żądanie reklamy, InterstitialAdLoadCallback) Reklama InterstitialAd korzysta teraz z tej samej metody ładowania statycznego, co inne formaty pełnoekranowe.
setAdListener()
Żądanie reklamy DynamicHeightSearch pobierzDodatkiSieci() REMOVED Klasa NetworkExtras została przestarzała.
AdLoader dla reklamy treści() REMOVED
dla reklamy instalacji aplikacji() REMOVED
z Korelatorem() REMOVED
pobierzAdapterMediacji NazwaKlasy() REMOVED