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