Migracja pakietów SDK

Ta strona dotyczy migracji w przypadku bieżącej 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 działały na co najmniej Androidzie API 21. Aby dostosować poziom interfejsu API, zmień wartość elementu 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.

Usunięcie lub zastąpienie wycofanych metod

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 wymiany
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 na wersję 22

Uzyskiwanie wersji pakietu SDK do reklam mobilnych Google za pomocą metody MobileAds.getVersion()

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

Nowa metoda zwraca oczekiwany zewnętrzny numer wersji, np. 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 wycofanej metody NativeCustomFormatAd.getVideoMediaView()

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 dotyczącym niestandardowych reklam natywnych.

Usuwane lub zastępowane metody

Tabela poniżej zawiera szczegółowe informacje o 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 Ł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 działały na poziomie API 19 lub wyższym. 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 wprowadzenia ścisłej zasady możliwości wartości null dodano adnotacje @NonNull we wszystkich interfejsach API, które wcześniej nie definiowały jednoznacznie możliwości wartości null.

Ta zmiana może spowodować nieprawidłowe działanie aplikacji w Kotlinie i aplikacji, które korzystają z ramek sprawdzania wartości null w Java, jeśli wystąpią naruszenia zasad bezpieczeństwa null, a wartości null nie były wcześniej obsługiwane w bezpieczny sposób (patrz dokumentacja Kotlina na temat bezpieczeństwa null).

Usunięcie metody addNetworkExtras()

Metoda addNetworkExtras(), która przekazuje dodatkowe parametry jako instancję NetworkExtras do konkretnego adaptera sieci reklamowej, została wycofana w wersji SDK 20.3.0 i zostanie usunięta w wersji 21.0.0. Zamiast tego 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 klasie AdRequest.Builder, która ustawia lokalizację użytkownika na potrzeby kierowania zapośredniczenia.
  • Metoda getLocation() w klasie AdRequest, która zwraca informacje o kierowaniu na lokalizację użytkownika przekazane wcześniej metodzie setLocation(Location location).
  • Metoda getLocation() w klasie MediationAdConfiguration, która zwraca lokalizację użytkownika, jeśli została zdefiniowana przez AdRequest.

Dane o lokalizacji nie są używane przez Google do kierowania reklam. W razie potrzeby należy używać interfejsów API innych firm, aby przekazywać informacje do zewnętrznych sieci reklamowych.

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 klasy i MediationAdLoadCallback interfejsu.

W tabeli poniżej znajdziesz odpowiednią klasę lub interfejs, których należy używać w przypadku każdego interfejsu zdarzenia niestandardowego od wersji 21.0.0:

Interfejsy w wersji 20.0.0 Klasa/ interfejs w wersji 21.0.0
CustomEvent Ładowarka
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adapter, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Migracja z wersji 19 na wersję 20

W wersji 20.0.0 jest wiele zmian powodujących niezgodność. Wersja 19.7.0 zawierała wiele nowych interfejsów API oraz wycofane lub przemianowane klasy 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

Począwszy 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ą standaryzowane, aby zachować spójność interfejsu API.

Wszystkie interfejsy API formatów pełnoekranowych działają zgodnie z tymi zasadami:

  • Metoda wczytywania statycznego
  • podobny mechanizm wywołania ładowania lub mechanizm obsługi;
  • Używanie klasy FullScreenContentCallback do wywołań zwrotnych dotyczących prezentacji

Usunięcie starszego interfejsu API RewardedVideoAd

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 starszą wersją interfejsu API RewardedVideoAd, m.in. możliwość wczytania więcej niż 1 reklamy z nagrodą naraz.

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

wycofanie banerów inteligentnych na rzecz banerów adaptacyjnych

Inteligentne banery zostały wycofane na rzecz adaptacyjnych banerów. Banery adaptacyjne zapewniają większą skuteczność i większą elastyczność w ustalaniu szerokości reklamy. Jeśli wolisz nadal używać banerów o pełnej szerokości, możesz to zrobić, korzystając z banera adaptacyjnego, 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)
    }
}

Leave application callback removal

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 spowodowało uruchomienie zewnętrznej przeglądarki, wywołało wywołanie zwrotne, ale nie zostało zliczone jako kliknięcie.

Zmiana nazwy zajęć

Tabela poniżej zawiera listę nazw klas, które zostały zmienione lub usunięte. Podsumowując:

  • Większość klas związanych z UnifiedNativeAd została przemianowana na NativeAd.
  • Klasy i widoki MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAdInstreamAd zostały usunięte.
  • Wszystkie klasy z preiksem Publisher zostały zastąpione preiksem AdManager.
  • Nazwa pakietu InterstitialAd została zmieniona.
Klasa 19.5.0 Klasa 20.0.0
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener rewarded.RewardedAdLoadCallback 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ę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ę zmian w wersji 20.0.0. W skrócie:

  • Z klasy MobileAds zostały usunięte przestarzałe metody inicjalizacji.
  • Niektóre metody z klasy AdRequest.Builder() zostały usunięte lub przeniesione do klasy RequestConfiguration.
  • Interfejsy API reklam z nagrodą i reklam pełnoekranowych zostały zaktualizowane, aby pasowały do wszystkich formatów pełnoekranowych.
  • Funkcje korelacji zostały usunięte.
Klasa Wersja 19.5.0 interfejsu API API w wersji 20.0.0 Uwagi
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds initialize(Context, String) MobileAds.initialize(Context, OnInitializationCompleteListener) Identyfikator aplikacji jest teraz ustawiony w pliku AndroidManifest.xml.
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationCompleteListener) Klasa Settings została wycofana.
getRewardedVideoAdInstance() Usunięto Zamiast tego użyj interfejsu RewardedAd API.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
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
setManualImpressionsEnabled() Usunięto
updateCorrelator() Usunięto Zapoznaj się z artykułem Filtrowanie treści reklam.
PublisherAdRequest.Builder setBirthday() Usunięto
setGender() Usunięto
setIsDesignedForFamilies() Usunięto Zapoznaj się z tym przewodnikiem.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Zobacz Włączanie reklam testowych.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() Zapoznaj się z artykułem Filtrowanie treści reklam.
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() Obiekt ResponseInfo jest teraz dostępny za pomocą metody AdView getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) Reklamy z nagrodą korzystają teraz z tego samego podejścia do ładowania statycznych danych co inne formaty pełnoekranowe.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Usunięto Zwróć uwagę, że wywołanie zwrotne z metody ładowania statycznego zawiera reklamę, która została już wczytana.
show(Activity, RewardedAdCallback) show(Activity, OnUserEarnedRewardListener) 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() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd używa teraz tego samego podejścia do ładowania statycznych plików co inne formaty pełnoekranowe.
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() Usunięto Klasa NetworkExtras została wycofana.
AdLoader forContentAd() Usunięto
forAppInstallAd() Usunięto
withCorrelator() Usunięto
getMediationAdapterClassName() Usunięto