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.

Począwszy od wersji 23.0.0 pakiet SDK do reklam mobilnych Google wymaga, aby wszystkie aplikacje musi działać z interfejsem Android API na poziomie 21. Aby dostosować poziom interfejsu API, zmień wartość 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 AdManagerAdRequest.Builder metody 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

Metoda MobileAds.getVersionString() została usunięta w wersji 22.0.0 na rzecz z MobileAds.getVersion()

Nowa metoda zwraca oczekiwany numer wersji zewnętrznej – na przykład 22.0.0 Więcej informacji na temat tej zmiany znajdziesz w artykule Korzystanie z nowej wersji Google Mobile Pakiet SDK do wyświetlania reklam getVersion() .

Usunięcie wycofanego formatu NativeCustomFormatAd.getVideoMediaView()

W wersji 21 pakiet SDK do reklam mobilnych Google udostępniał NativeCustomFormatAd.getVideoMediaView(), by uzyskać zasób multimedialny dla niestandardowy format reklamy natywnej.

Od wersji 22 możesz tworzyć własne MediaView i ustawiać dla nich multimedia i zastosowania MediaContent.getVideoController() aby przejść do elementów sterujących 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());
    }
}

Zobacz niestandardowe reklamy natywne reklama .

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 interfejsu API Androida na poziomie 19 lub wyższym. Aby dostosować poziom interfejsu API, zmień wartość wartość minSdkVersion w pliku kompilacji aplikacji na co najmniej 19.

Egzekwuj ścisłą dopuszczalność wartości null

W ramach przygotowań do egzekwowania ścisłej dopuszczalności wartości null adnotacje @NonNull są we wszystkich interfejsach API, które nie miały jawnie zdefiniowanej dopuszczalności wartości null.

Ta zmiana może zakłócić działanie aplikacji i aplikacji Kotlin, które używają sprawdzania null w języku Java platformy w przypadku wystąpienia zerowych naruszeń bezpieczeństwa, które nie były wcześniej obsługiwane null w bezpieczny sposób (zapoznaj się z dokumentacją Kotlin w sekcji Niski poziom bezpieczeństwa ).

Usunięto metodę addNetworkExtras()

Metoda addNetworkExtras(), która przekazuje dodatkowe parametry jako Wystąpienie NetworkExtras z konkretnym adapterem sieci reklamowej zostało wycofane z pakietu SDK 20.3.0, a zostaną usunięte w wersji 21.0.0. Użyj 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óry ustawia lokalizację użytkownika na potrzeby kierowania przez zapośredniczenie.
  • Metoda getLocation() w klasie AdRequest, która zwraca zapytanie użytkownika informacje o kierowaniu na lokalizację przekazywane wcześniej do metody setLocation(Location location).
  • Metoda getLocation() w klasie MediationAdConfiguration, która zwraca lokalizację użytkownika, jeśli została zdefiniowana w AdRequest.

Google nie używa danych o lokalizacji do kierowania reklam. Należy użyć interfejsów API innych firm do przekazywania danych zewnętrznym sieciom reklamowym, jeśli

Wycofanie interfejsów zdarzeń niestandardowych

Zdarzenia niestandardowe umożliwiają wydawcom korzystanie z zapośredniczenie aby skonfigurować kaskadowe źródło reklam, które nie jest jeden z Ad Manager obsługiwanych źródeł reklam.

Wszystkie niestandardowe Zdarzenie interfejs został wycofany i zastąpiony Adapter. klasa i MediationAdLoadCallback. za pomocą prostego interfejsu online.

Tabela poniżej zawiera odpowiednią klasę lub interfejs, których należy użyć dla każdego interfejsu zdarzeń niestandardowych 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ść. Wprowadzono wersję 19.7.0 wiele nowych interfejsów API, a w ramach przygotowań do wersji wycofaliśmy wiele klas lub zmieniono ich nazwy 20.0.0. W tym przewodniku opisujemy główne zmiany wprowadzone w wersji 20.0.0.

Aktualizacje interfejsu API formatu pełnoekranowego

Od wersji 20.0.0: reklamy pełnoekranowe, reklamy z nagrodą, reklamy pełnoekranowe z nagrodą Formaty reklam wyświetlanych przy otwarciu aplikacji zostały ustandaryzowane tak, aby były zgodne ze spójną konstrukcją interfejsu 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
  • Poleganie na FullScreenContentCallback klasa wywołań zwrotnych prezentacji

Usunięcie starszej wersji interfejsu Nagrody VideoAd API

Nowsza RewardedAd Interfejs API został po raz pierwszy wprowadzony w marcu 2019 r. i jest preferowanym interfejsem reklam z nagrodami. API od ponad 18 miesięcy. Zawierał więcej ulepszeń w porównaniu do starszej wersji. Interfejs API RewardedVideoAd, w tym możliwość wczytania więcej niż 1 reklamy z nagrodą za jednym razem.

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 za baner adaptacyjny. reklam. Banery adaptacyjne zapewniają wysoką skuteczność i elastyczność ustawianie szerokości reklamy. Jeśli nadal chcesz używać banerów o pełnej szerokości, jak widać 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 na rzecz z ProcessLifecycleOwner Używanie interfejsu API na poziomie systemu operacyjnego powiadomi Cię za każdym razem, gdy użytkownik opuści aplikację, niezależnie od tego niezależnie od tego, czy wynika ono z interakcji z reklamą.

Pamiętaj, że wywołanie zwrotne onAdLeftApplication nigdy nie było reklamą modułu obsługi kliknięć, a użycie tego wywołania zwrotnego do raportowania kliknięć nie przyniosło dokładne dane. Na przykład kliknięcie ikony Informacja, które spowodowało uruchomienie reklamy zewnętrzna przeglądarka wywołała wywołanie zwrotne, ale nie liczy się jako kliknięcie.

Zmiana nazw zajęć

W tabeli poniżej znajdziesz nazwy konkretnych klas, które zostały zmienione lub usunięte. W podsumowanie:

  • Większość zajęć związanych z UnifiedNativeAd została zmieniona na NativeAd.
  • MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, Zajęcia i widoki zostały usunięte: NativeContentAd oraz InstreamAd.
  • Wszystkie zajęcia z prefiksem Publisher zostały zastąpione 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
formats.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
Correlator 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 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 przeszedł do zajęć RequestConfiguration.
  • Interfejsy API reklam z nagrodą i pełnoekranowych reklam zostały zaktualizowane, aby zapewnić zgodność ze wszystkimi w formatach 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()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
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.
getRewardedVideoAdInstance() Usunięta Zamiast tego użyj interfejsu API z nagrodą.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() Usunięta Formaty reklam pełnoekranowych używają funkcji FullscreenContentCallback zamiast AdListener i nie ma odpowiedniej metody dla funkcji FullscreenContentCallback. Usunięto metodę AdListener.
VideoController getAspectRatio() MediaContent.getAspectRatio()
PublisherAdRequest getGender() Usunięta
getBirthday() Usunięta
getNetworkExtras() Usunięta
setManualImpressionsEnabled() Usunięta
updateCorrelator() Usunięta Zobacz Filtrowanie treści reklamy.
PublisherAdRequest.Builder setBirthday() Usunięta
setGender() Usunięta
setIsDesignedForFamilies() Usunięta Zobacz przewodnik.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Przeczytaj artykuł 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, NagrodaAdLoadCallback) YieldAd.load(Kontekst, Ciąg, AdRequest, NagrodaAdLoadCallback) Reklamy z nagrodą wykorzystują teraz tę samą strategię wczytywania statycznego co inne reklamy w formatach pełnoekranowych.
loadAd(PublisherAdRequest, NagrodaAdLoadCallback) YieldAd.load(Kontekst, Ciąg, AdManagerAdRequest, NagrodaAdLoadCallback)
isLoaded() Usunięta 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 onRewardedAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdLoaded(RewardedInterstitialAd) onAdLoaded(RewardedInterstitialAd)
PublisherInterstitialAd new PublisherInterstitialAd() fullAd.load(Context, String, AdRequest, pełnoekranowyAdLoadCallback) W przypadku reklamy pełnoekranowej reklamy pełnoekranowe korzystają teraz z tej samej metody wczytywania statycznego, innych formatów pełnoekranowych.
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() Usunięta Klasa NetworkExtras została wycofana.
AdLoader forContentAd() Usunięta
forAppInstallAd() Usunięta
withCorrelator() Usunięta
getMediationAdapterClassName() Usunięta