На этой странице описываются миграции для текущей и предыдущих версий.
Миграция с 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 ИмяКласса() | Удаленный |