Миграция SDK,Миграция SDK

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

Миграция с v23 на v24

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

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

Начиная с версии 24.0.0, Google Mobile Ads SDK требует, чтобы все приложения работали на уровне 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 .

Удалены устаревшие API ориентации для рекламы при открытии приложения.

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

Упрощенный обратный вызов вознаграждения для адаптеров-посредников

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

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

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

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

  • DynamicHeightSearchAdRequest
  • SearchAdRequest
  • SearchAdView

Методы удалены

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

Сорт Метод
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdLoaded()
onRewardedInterstitialAdFailedToLoad(int)
onRewardedInterstitialAdFailedToLoad(LoadAdError)

Методы устарели

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

Сорт Метод
Адаптер loadInterscrollerAd()
RtbAdapter loadRtbInterscrollerAd()

Миграция с v22 на v23

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

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

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

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

API v22.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.НЕИЗВЕСТНЫЙ Нет замены
AdLoader.Builder.forUnifiedNativeAd() AdLoader.Builder.forNativeAd()
AdLoader.Builder.forCustomTemplateAd() AdLoader.Builder.forCustomFormatAd()
AdLoader.Builder.withNativeAdOptions( formats ) AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.nativead nativead )
void MobileAds.setSameAppKeyEnabled() логический MobileAds.putPublisherFirstPartyIdEnabled()

Миграция с v21 на v22

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

Используйте MobileAds.getVersion() для получения версии Google Mobile Ads SDK.

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

Новый метод возвращает ожидаемый внешний номер версии, например, 22.0.0 . Подробнее об этом изменении см. в статье Использование нового метода Google Mobile Ads SDK getVersion() .

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

В следующей таблице перечислены конкретные изменения в версии 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 Адаптер
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

Миграция с v20 на v21

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

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

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

Обеспечить строгую недопустимость значений NULL

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

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

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

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

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

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

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

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

Устаревание пользовательских интерфейсов событий

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

Все пользовательские интерфейсы событий устарели в пользу класса Adapter и интерфейса MediationAdLoadCallback .

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

Интерфейсы v20.0.0 v21.0.0 Класс/Интерфейс
CustomEvent Адаптер
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Адаптер , MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Миграция с версии 19 на версию 20

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

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

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

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

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

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

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

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

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

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

Ява

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

Котлин

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 никогда не подразумевалась как обработчик кликов по рекламе, и использование этой функции для отчётности о кликах не приводило к получению точной метрики. Например, нажатие на значок AdChoices, запускающее внешний браузер, вызывало функцию обратного вызова, но не считалось кликом.

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

В следующей таблице перечислены конкретные имена классов, которые были изменены или удалены:

  • Большинство классов, относящихся к UnifiedNativeAd были переименованы в NativeAd .
  • Классы и представления MobileAds.Settings , NativeExpressAdView , NativeAppInstallAd , NativeContentAd и InstreamAd были удалены.
  • Все классы с префиксом Publisher были заменены префиксом AdManager .
  • Название пакета InterstitialAd изменилось.
19.5.0 Класс Класс 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
форматы.UnifiedNativeAdView nativead.NativeAdView
форматы.UnifiedNativeAd nativead.NativeAd
Форматы.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
Форматы.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
форматы.AdChoicesView nativead.AdChoicesView
Форматы.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
форматы.MediaView nativead.MediaView
форматы.NativeAdViewHolder nativead.NativeAdViewHolder
форматы.NativeAdOptions nativead.NativeAdOptions
Форматы.NativeCustomTemplateAd nativead.NativeCustomFormatAd
Форматы.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd .OnCustomFormatAdLoadedListener
MobileAds.Settings Удаленный
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
форматы.PublisherAdViewOptions форматы.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView Удаленный
instream.InstreamAd Удаленный
mediation.admob.AdMobExtras Удаленный
Коррелятор Удаленный
search.SearchAdRequest Удаленный
Интерфейс AdRequest.TagForUnderAgeOfConsent Удаленный
Интерфейс AdRequest.MaxAdContentRating Удаленный
форматы.NativeAppInstallAd native.NativeAd
форматы.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
форматы.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 getPortraitBanner AdSizeWithWidth() getPortraitAnchored AdaptiveBannerAdSize()
getLandscapeBanner AdSizeWithWidth() getLandscapeAnchored AdaptiveBannerAdSize()
получитьCurrentOrientation BannerAdSizeWithWidth() getCurrentOrientationAnchored AdaptiveBannerAdSize()
MobileAds инициализировать(Контекст, Строка) MobileAds.initialize(Context, OnInitializationComplete Listener) Идентификатор приложения теперь задан в AndroidManifest.xml.
инициализировать(Контекст, Строка, MobileAds.Settings) инициализировать(Контекст, OnInitializationComplete Прослушиватель) Класс Settings устарел.
getRewardedVideo AdInstance() Удаленный Вместо этого используйте API RewardedAd.
AdListener onAdFailedToLoad(int) onAd FailedToLoad(LoadAdError)
onAdLeftApplication() Удаленный Полноэкранные форматы рекламы используют FullscreenContentCallback вместо AdListener, и в FullscreenContentCallback нет аналогичного метода. Этот метод был удалён из AdListener.
Видеоконтроллер получитьAspectRatio() MediaContent.getAspectRatio()
AdRequest получитьПол() Удаленный
получитьДеньРождения() Удаленный
getNetworkExtras() Удаленный
setManualImpressions включен() Удаленный
updateCorrelator() Удаленный См. Фильтрация рекламного контента .
AdRequest.Builder setBirthday() Удаленный
setGender() Удаленный
setIsDesignedForFamilies() Удаленный См. руководство .
addTestDevice() RequestConfiguration .Builder .setTestDeviceIds() См. Включить тестовые объявления .
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagFor ChildDirectedTreatment() См. Фильтрация рекламного контента .
setTagFor UnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration .Builder .setMaxAdContentRating()
AdView getMediationAdapter ИмяКласса() ResponseInfo .getMediationAdapter ИмяКласса() Объект ResponseInfo доступен с помощью метода AdView , getResponseInfo() .
NativeAdOptions setImageOrientation() setMediaAspectRatio()
получитьImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Контекст, Строка, Запрос рекламы, RewardedAdLoadCallback) RewardedAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Контекст, Строка, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Удаленный Обратный вызов из метода статической загрузки возвращает уже загруженную рекламу.
показывать(Activity, RewardedAdCallback) показывать(Activity, OnUserEarnedRewardListener) Этот метод показа соответствует более широкому подходу к полноэкранному формату.
RewardedAdLoadCallback onRewardedAd FailedToLoad(int) onAd FailedToLoad(LoadAdError)
onRewardedAd FailedToLoad(LoadAdError) onAd FailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAd FailedToLoad(int) onAd FailedToLoad(LoadAdError)
onAppOpenAd FailedToLoad(LoadAdError) onAd FailedToLoad(LoadAdError)
onAppOpenAd загружен(AppOpenAd) onAdLoaded(AppOpenAd)
Обратный вызов RewardedInterstitialAdLoad onRewardedInterstitialAd FailedToLoad(int) onAd FailedToLoad(LoadAdError)
onRewardedInterstitialAd FailedToLoad(LoadAdError) onAd FailedToLoad(LoadAdError)
onRewardedInterstitialAd загружен(RewardedInterstitialAd) onAd Loaded(RewardedInterstitialAd)
InterstitialAd новый InterstitialAd() InterstitialAd.load(Контекст, Строка, Запрос рекламы, InterstitialAdLoadCallback) InterstitialAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы.
setAdListener()
Запрос DynamicHeightSearchAd getNetworkExtras() Удаленный Класс NetworkExtras устарел.
AdLoader forContentAd() Удаленный
forAppInstallAd() Удаленный
withCorrelator() Удаленный
getMediationAdapter ИмяКласса() Удаленный