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

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

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

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

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

Начиная с версии 24.0.0, Google Mobile Ads SDK требует, чтобы все приложения работали на уровне API Android не ниже 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()
RtbАдаптер 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 v23.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(com.google.android.gms.ads.formats 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()
ПосредничествоRewardedVideoAdAdapter Адаптер
ПосредничествоRewardedVideoAdListener
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 во все API, которые ранее явно не определяли допустимость значений NULL, добавлены аннотации @NonNull

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

Удаление метода 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 Класс/Интерфейс
ПользовательскоеСобытие Адаптер
CustomEventBanner
CustomEventИнтерстициальный
CustomEventNative
ПользовательскийEventBannerListener Адаптер , ПосредничествоAdLoadCallback
ПользовательскийEventInterstitialListener
Пользовательский прослушиватель событий
ПользовательскийEventNativeListener

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

В версии 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 года и был предпочтительным API с вознаграждением на протяжении более 18 месяцев. Он имел больше улучшений по сравнению с устаревшим 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.
вознаграждение.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener rewarded.RewardedAdLoadCallback и FullScreenContentCallback
вознаграждение.RewardItem вознаграждён.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 Удаленный
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 родной.NativeAd
Форматы.NativeAppInstallAdView родной.NativeAdView
mediation.NativeAppInstallAdMapper посредничество.UnifiedNativeAdMapper
Форматы.NativeContentAd родной.NativeAd
Форматы.NativeContentAdView родной.NativeAdView
mediation.NativeContentAdMapper посредничество.UnifiedNativeAdMapper

Методы удалены/заменены

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

  • Устаревшие методы инициализации были удалены из класса MobileAds.
  • Некоторые методы из класса AdRequest.Builder() были удалены или перенесены в класс RequestConfiguration .
  • API RewardedAd и InterstitialAd были обновлены для соответствия всем полноэкранным форматам.
  • Функции коррелятора были удалены.
Сорт API-интерфейс v19.5.0 API v20.0.0 Примечания
AdSize getPortraitBanner AdSizeWithWidth() getPortraitAnchored AdaptiveBannerAdSize()
getLandscapeBanner AdSizeWithWidth() getLandscapeAnchored AdaptiveBannerAdSize()
получитьТекущуюОриентациюБаннерAdSizeWithWidth() getCurrentOrientationAnchored AdaptiveBannerAdSize()
Мобильная реклама инициализировать(Контекст, Строка) MobileAds.initialize(Контекст, OnInitializationComplete Прослушиватель) Идентификатор приложения теперь задан в AndroidManifest.xml.
инициализировать(Контекст, Строка, MobileAds.Settings) инициализировать(Контекст, Слушатель OnInitializationComplete) Класс Settings устарел.
getRewardedVideo AdInstance() Удаленный Вместо этого используйте API RewardedAd.
AdListener onAdFailedToLoad(целое) onAd не удалось загрузить (LoadAdError)
onAdLeftApplication() Удаленный Полноэкранные форматы рекламы используют FullscreenContentCallback вместо AdListener, и эквивалентного метода в FullscreenContentCallback нет. Метод был удален из AdListener.
Видеоконтроллер получитьAspectRatio() MediaContent.getAspectRatio()
AdRequest получитьПол() Удаленный
получитьДеньРождения() Удаленный
getNetworkExtras() Удаленный
setManualImpressions включен() Удаленный
updateCorrelator() Удаленный См. Фильтрация рекламного контента .
AdRequest.Builder установитьДеньРождения() Удаленный
установитьПол() Удаленный
setIsDesignedForFamilies() Удаленный См. руководство .
добавитьTestDevice() RequestConfiguration .Builder .setTestDeviceIds() См. Включить тестовые объявления .
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagFor ChildDirectedTreatment() См. Фильтрация рекламного контента .
setTagFor UnderAgeOfConsent() RequestConfiguration.Builder.setTagFor UnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration .Builder .setMaxAdContentRating()
AdView getMediationAdapter ИмяКласса() ResponseInfo .getMediationAdapter ИмяКласса() Объект ResponseInfo доступен с помощью метода AdView , getResponseInfo() .
NativeAdOptions setImageOrientation() setMediaAspectRatio()
получитьImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Контекст, Строка, AdRequest, RewardedAdLoadCallback) RewardedAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Контекст, Строка, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Удаленный Обратный вызов из метода статической загрузки возвращает уже загруженную рекламу.
показывать(Активность, RewardedAdCallback) показывать(Действие, OnUserEarnedRewardListener) Этот метод показа соответствует более широкому подходу полноэкранного формата.
RewardedAdLoadCallback onRewardedAd не удалось загрузить (целое число) onAd не удалось загрузить (LoadAdError)
onRewardedAd не удалось загрузить (LoadAdError) onAd не удалось загрузить (LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAd не удалось загрузить (целое число) onAd не удалось загрузить (LoadAdError)
onAppOpenAd не удалось загрузить (LoadAdError) onAd не удалось загрузить (LoadAdError)
onAppOpenAd загружен(AppOpenAd) onAdLoaded(AppOpenAd)
RewardedInterstitialAdLoad Обратный вызов onRewardedInterstitialAd Не удалось загрузить (целое число) onAd не удалось загрузить (LoadAdError)
onRewardedInterstitialAd Не удалось загрузить (LoadAdError) onAd не удалось загрузить (LoadAdError)
onRewardedInterstitialAd загружен(RewardedInterstitialAd) onAd Loaded (Интерактивная реклама с вознаграждением)
InterstitialAd новый InterstitialAd() InterstitialAd.load(Контекст, Строка, Запрос рекламы, Обратный вызов InterstitialAdLoad) InterstitialAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы.
setAdListener()
Запрос DynamicHeightSearchAd getNetworkExtras() Удаленный Класс NetworkExtras устарел.
AdLoader forContentAd() Удаленный
forAppInstallAd() Удаленный
сКоррелятором() Удаленный
getMediationAdapter ИмяКласса() Удаленный