Migracja pakietów SDK

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ą.

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ę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 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 zdefiniowana w zasadzie AdRequest.

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 zzapośredniczenia do konfigurowania kaskadowego źródła reklam, które nie jest jednym z obsługiwanych przez AdMobź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, MediationAdLoadCallback
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 na NativeAd.
  • Klasy i widoki MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd oraz 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 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.OnCustomTemplateAdLoadedListener natywnead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
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 klasy RequestConfiguration.
  • 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 getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getPortraitBannerAdSizeWithWidth() getscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds inicjuj(kontekst, ciąg) MobileAds.initialize(Context, OnInitializationCompletedetektor) Identyfikator aplikacji jest teraz ustawiony w pliku AndroidManifest.xml.
inicjuj(Kontekst, Ciąg, Reklamy mobilne.Ustawienia) inicjuj(Context, OnInitializationCompletedetektor) Klasa ustawień została wycofana.
getNagrodyVideoAdInstance() Usunięto Zamiast tego użyj interfejsu API z nagrodą.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
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()
AdRequest getGender() Usunięto
getBirthday() Usunięto
getNetworkExtras() Usunięto
setManualImpressionsEnabled() Usunięto
updateCorrelator() Usunięto Zapoznaj się z sekcją Filtrowanie treści reklamy.
AdRequest.Budowa setBirthday() Usunięto
setGender() Usunięto
setIsDesignedForFamilies() Usunięto Zobacz przewodnik.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Przeczytaj artykuł Włączanie reklam testowych.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() Zapoznaj się z sekcją 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, 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 RewardsAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAudienceAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
Nagrody pełnoekranowejAdLoadWywołanie zwrotne onNagrody pełnoekranowejFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onReklama pełnoekranowa z nagrodąFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onMarketpełnoekranowyAdLoaded(ReklamaPełnoekranowa z nagrodą) onAdLoaded(ReklamaPełnoekranowa z nagrodą)
InterstitialAd nowy InterstitialAd() 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
getMediationAdapterClassName() Usunięto