Как перенести версии SDK

Выберите платформу: iOS Unity Android (устаревшая версия)

На этой странице описаны переходы на текущую и предыдущие версии.

Переход с версии 24 на версию 25

В следующих подразделах описаны несовместимые изменения и различия в поведении между основными версиями 24 и 25 Google Mobile Ads SDK (Legacy).

Минимальный уровень Android API – 24.

Начиная с версии 25.5.0, Google Mobile Ads SDK (Legacy) требует, чтобы все приложения работали на Android с минимальным уровнем API 24. Чтобы изменить уровень API, задайте для параметра minSdk в файле build.gradle на уровне приложения значение 24 или выше.

Удалены устаревшие обратные вызовы объявлений

Из следующих классов были удалены устаревшие обратные вызовы объявлений:

Класс Удалены обратные звонки Замена
SignalCallbacks onFailure(String)
onAdFailedToShow(String)
onFailure(AdError)
onAdFailedToShow(AdError)
MediationAdLoadCallback
MediationInterstitialAdCallback
MediationRewardedAdCallback

Изменения в API для фиксированных адаптивных баннеров

В версии 25.0.0 прекращена поддержка существующих API для фиксированных адаптивных баннеров и добавлены API для больших фиксированных адаптивных баннеров. Google Mobile Ads SDK (Legacy) может показывать видеорекламу в баннерах, используя новые API для больших фиксированных адаптивных баннеров.

В таблице ниже перечислены устаревшие API для определения размеров и их замены.

v24 (поддержка прекращена) v25 (замена)
getCurrentOrientationAnchoredAdaptiveBannerAdSize(Context, int) getLargeAnchoredAdaptiveBannerAdSize(Context, int)
getLandscapeAnchoredAdaptiveBannerAdSize(Context, int) getLargeLandscapeAnchoredAdaptiveBannerAdSize(Context, int)
getPortraitAnchoredAdaptiveBannerAdSize(Context context, int width) getLargePortraitAnchoredAdaptiveBannerAdSize(Context context, int width)

Удаление класса mediation.VersionInfo

Класс VersionInfo в пакете com.google.android.gms.ads.mediation удален. Вместо него используйте пакет com.google.android.gms.ads.VersionInfo.

Удаление метода getConfiguration() в классе RtbSignalData

Удален устаревший метод getConfiguration() API в RtbSignalData. Вместо него используйте метод getConfigurations(), который возвращает список List<MediationConfiguration>.

Переход с версии 23 на версию 24

В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 23 и 24 Google Mobile Ads SDK (Legacy).

Минимальный уровень Android API – 23.

Начиная с версии 24.0.0, Google Mobile Ads SDK (Legacy) требует, чтобы все приложения работали на Android с минимальным уровнем API 23. Чтобы изменить уровень API, задайте для параметра minSdk в файле build.gradle на уровне приложения значение 23 или выше.

Изменения в оптимизированной инициализации и загрузке

По умолчанию для флагов OPTIMIZE_INITIALIZATION и OPTIMIZE_AD_LOADING задано значение true. Подробнее об инициализации и загрузке…

Удалены зависимости firebase-ads и firebase-ads-lite

Начиная с версии 24.0.0, в выпусках SDK больше не распространяются зависимости firebase-ads и firebase-ads-lite. Вместо него используйте зависимость play-services-ads.

Как задать специальные параметры таргетинга

Чтобы задать таргетинг со специальными настройками для запроса объявления, используйте addCustomTargeting().

Удалены устаревшие API ориентации для объявлений при запуске приложений

  • Удалены методы AppOpenAd.load(), принимающие параметр ориентации. Вместо этого используйте методы AppOpenAd.load(), которые не принимают ориентацию.
  • Удалено перечисление AppOpenAdOrientation.

Упрощенный обратный вызов для адаптеров медиации

В версии 24.0.0 в MediationRewardedAdCallback добавлен обратный вызов onUserEarnedReward(), а onUserEarnedReward(RewardItem) объявлен устаревшим. Адаптеры медиации должны начинать вызывать onUserEarnedReward(), когда пользователь получает вознаграждение.

При пересылке обратных вызовов из адаптеров медиации все версии Google Mobile Ads SDK (Legacy) возвращают вознаграждение, заданное в интерфейсе Менеджера рекламы, в OnUserEarnedRewardListener.

Курсы удалены

Следующие классы были удалены без замены:

  • DynamicHeightSearchAdRequest
  • SearchAdRequest
  • SearchAdView

Удаленные методы

Следующие методы были удалены без замены:

Класс Метод
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdLoaded()
onRewardedInterstitialAdFailedToLoad(int)
onRewardedInterstitialAdFailedToLoad(LoadAdError)

Устаревшие методы

Следующие методы устарели и не имеют аналогов:

Класс Метод
Adapter loadInterscrollerAd()
RtbAdapter loadRtbInterscrollerAd()

Переход с версии 22 на версию 23

В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 22 и 23 Google Mobile Ads SDK (Legacy).

Минимальный уровень Android API – 21.

Начиная с версии 23.0.0, Google Mobile Ads SDK (Legacy) требует, чтобы для запуска всех приложений использовался минимальный уровень API Android 21. Чтобы изменить уровень API, задайте для параметра minSdkVersion в файле build.gradle на уровне приложения значение 21 или выше.

AdManagerAdRequest.Builder методы, унаследованные от суперкласса, можно объединять в цепочки.

В версии 23.0.0 методы AdManagerAdRequest.Builder, унаследованные от родительского класса, можно объединять в цепочки, чтобы создать объект AdManagerAdRequest с помощью одного вызова:

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.

Удаление или замена устаревших методов

API версии 22.0.0 API версии 23.0.0
AdRequest.Builder.addTestDevice() RequestConfiguration.Builder.setTestDeviceIds()
AdRequest.Builder.tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment()
AdRequest.Builder.setIsDesignedForFamilies() RequestConfiguration.Builder.setMaxAdContentRating()
AdFormat.UNKNOWN Без замены
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()

Переход с версии 21 на версию 22

В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 21 и 22 Google Mobile Ads SDK (Legacy).

Используйте MobileAds.getVersion(), чтобы получить версию Google Mobile Ads SDK (Legacy).

Метод MobileAds.getVersionString() удален в версии 22.0.0. Вместо него используется метод MobileAds.getVersion().

Новый метод возвращает ожидаемый внешний номер версии, например 22.0.0. Подробнее о новом методе Google Mobile Ads SDKgetVersion()…

Удаление устаревшего метода NativeCustomFormatAd.getVideoMediaView()

В версии 21 метод Google Mobile Ads SDK (Legacy) позволяет получить медиаобъект для нативного собственного формата объявлений.NativeCustomFormatAd.getVideoMediaView()

Начиная с версии 22, вы можете создать собственный элемент MediaView, задать его медиаконтент и использовать MediaContent.getVideoController(), чтобы получить доступ к элементам управления видео.

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

Подробнее о пользовательских нативных объявлениях…

Удаленные или замененные методы

В таблице ниже перечислены изменения в версии 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

Переход с версии 20 на версию 21

В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 20 и 21 Google Mobile Ads SDK (Legacy).

Обновите minSdkVersion до версии 19 или более новой.

Начиная с версии 21.0.0, для работы Google Mobile Ads SDK (Legacy) требуется, чтобы все приложения были на уровне API 19 или выше. Чтобы изменить уровень API, задайте для параметра minSdkVersion в файле сборки приложения значение 19 или выше.

Как включить строгую проверку на допустимость значения NULL

В рамках подготовки к обязательному использованию строгой допустимости значения NULL во все API, в которых ранее не было явного определения допустимости значения NULL, добавлены аннотации @NonNull.

Это изменение может привести к сбоям в работе приложений Kotlin и приложений, в которых используются фреймворки для проверки на наличие нулевых значений, если в них есть нарушения безопасности нулевых значений и ранее значения null обрабатывались небезопасным образом (см. документацию Kotlin по безопасности нулевых значений).

Удаление метода addNetworkExtras()

Метод addNetworkExtras(), который передает дополнительные параметры в виде экземпляра NetworkExtras определенному адаптеру рекламной сети, был объявлен устаревшим в версии 20.3.0 SDK и будет удален в версии 21.0.0. Вместо него используйте метод addNetworkExtrasBundle() из того же класса AdRequest.Builder.

Удаление методов определения местоположения

В версии 21.0.0 будут удалены следующие методы определения местоположения:

  • Метод setLocation(Location location) в классе AdRequest.Builder, который задает местоположение пользователя для таргетинга на медиацию.
  • Метод getLocation() в классе AdRequest, который возвращает информацию о местоположении пользователя, ранее переданную методу setLocation(Location location).
  • Метод getLocation() в классе MediationAdConfiguration, который возвращает местоположение пользователя, если оно определено в AdRequest.

Google не использует данные о местоположении для таргетинга рекламы. Если сторонним рекламным сетям требуется эта информация, вы можете передать ее с помощью сторонних API.

Прекращение поддержки интерфейсов специальных событий

Специальные события позволяют издателям, использующим медиацию, настроить источник объявлений в каскаде, который не входит в число поддерживаемых источников объявлений Ad Manager.

Все интерфейсы custom event устарели. Вместо них рекомендуется использовать класс Adapter и интерфейс MediationAdLoadCallback.

В таблице ниже перечислены классы и интерфейсы, которые необходимо использовать для каждого интерфейса специального события, начиная с версии 21.0.0:

Интерфейсы версии 20.0.0 v21.0.0 Class/ Interface
CustomEvent Adapter
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adapter, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Переход с версии 19 на версию 20

В версии 20.0.0 много критических изменений. В версии 19.7.0 появилось много новых API, а также были удалены или переименованы многие классы в рамках подготовки к выпуску версии 20.0.0. В этом руководстве описаны основные изменения в версии 20.0.0.

Изменения в API полноэкранного формата

Начиная с версии 20.0.0, межстраничные объявления, объявления с вознаграждением, межстраничные объявления с вознаграждением и объявления при запуске приложения стандартизированы в соответствии с единым дизайном API.

Все API полноэкранных форматов используют следующие принципы:

  • Статический метод загрузки
  • похожий обратный вызов или обработчик загрузки;
  • Использование класса FullScreenContentCallback для обратных вызовов при показе презентации.

Удаление устаревшего API RewardedVideoAd

Более новый API RewardedAd был представлен в марте 2019 года и уже более 18 месяцев является предпочтительным API для объявлений с вознаграждением. В нем больше улучшений по сравнению с устаревшим API RewardedVideoAd, в том числе возможность загружать более одного объявления с вознаграждением одновременно.

Устаревший API RewardedVideoAd удален в версии SDK 20.0.0.

Прекращение поддержки смарт-баннеров в пользу адаптивных баннеров

Смарт-баннеры больше не поддерживаются. Вместо них рекомендуется использовать адаптивные баннеры. Адаптивные баннеры более эффективны и позволяют более гибко настраивать ширину объявлений. Если вы хотите и дальше использовать баннеры во всю ширину, это можно сделать с помощью адаптивных баннеров, как показано в следующем фрагменте кода:

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

Удаление обратного вызова при выходе из приложения

Обратный вызов onAdLeftApplication для всех форматов объявлений был удален. Вместо него используется ProcessLifecycleOwner. Использование API на уровне ОС позволяет получать уведомления о том, что пользователи покидают приложение, независимо от того, связано ли это с взаимодействием с объявлением.

Обратите внимание, что обратный вызов onAdLeftApplication никогда не предназначался для обработки кликов по объявлениям, и использование этого обратного вызова для регистрации кликов не позволяло получать точные данные. Например, клик по значку "Выбор рекламы", который запустил внешний браузер, вызвал обратный вызов, но не был засчитан как клик.

Переименование классов

В таблице ниже перечислены названия классов, которые были изменены или удалены.

  • Большинство классов, связанных с UnifiedNativeAd, были переименованы в NativeAd.
  • Удалены классы и представления MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd и InstreamAd.
  • Все классы с префиксом Publisher были заменены на классы с префиксом AdManager.
  • Название пакета InterstitialAd изменилось.
19.5.0 Class Класс 20.0.0
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener rewarded.RewardedAdLoadCallback и 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 Удалено
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView Удалено
instream.InstreamAd Удалено
mediation.admob.AdMobExtras Удалено
Correlator Удалено
search.SearchAdRequest Удалено
Интерфейс AdRequest.TagForUnderAgeOfConsent Удалено
Интерфейс AdRequest.MaxAdContentRating Удалено
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

Удаленные или замененные методы

В таблице ниже перечислены изменения в версии 20.0.0.

  • Из класса MobileAds удалены устаревшие методы инициализации.
  • Некоторые методы из класса AdRequest.Builder() были удалены или перенесены в класс RequestConfiguration.
  • API RewardedAd и InterstitialAd были обновлены, чтобы соответствовать всем полноэкранным форматам.
  • Функции коррелятора удалены.
Класс API версии 19.5.0 API версии 20.0.0 Примечания
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds initialize(Context, String) MobileAds.initialize(Context, OnInitializationCompleteListener) Идентификатор приложения задан в файле AndroidManifest.xml.
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationCompleteListener) Класс Settings устарел.
getRewardedVideoAdInstance() Удалено Вместо него используйте RewardedAd API.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() Удалено В полноэкранных форматах объявлений вместо AdListener используется FullscreenContentCallback, и в FullscreenContentCallback нет эквивалентного метода. Метод удален из AdListener.
VideoController getAspectRatio() MediaContent.getAspectRatio()
PublisherAdRequest getGender() Удалено
getBirthday() Удалено
getNetworkExtras() Удалено
setManualImpressionsEnabled() Удалено
updateCorrelator() Удалено Подробнее о фильтрации содержания объявления…
PublisherAdRequest.Builder setBirthday() Удалено
setGender() Удалено
setIsDesignedForFamilies() Удалено руководство.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Подробнее о том, как включить тестовые объявления…
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() Подробнее о фильтрации содержания объявления…
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() Объект ResponseInfo доступен с помощью метода AdView, getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) Теперь в RewardedAd используется тот же статический подход к загрузке, что и в других полноэкранных форматах.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Удалено Обратный вызов из статического метода загрузки предоставляет уже загруженное объявление.
show(Activity, RewardedAdCallback) show(Activity, OnUserEarnedRewardListener) Этот метод показа соответствует общему подходу к полноэкранному формату.
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) Теперь для загрузки межстраничных объявлений используется тот же статический подход, что и для других полноэкранных форматов.
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() Удалено Класс NetworkExtras больше не поддерживается.
AdLoader forContentAd() Удалено
forAppInstallAd() Удалено
withCorrelator() Удалено
getMediationAdapterClassName() Удалено