На этой странице описаны миграции для текущей и предыдущих версий.
Миграция с версии 23 на версию 24
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 23 и 24 Google Mobile Ads SDK.
Минимальный уровень Android API — 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
Методы удалены
Следующие методы были удалены без замены:
Сорт | Метод |
---|---|
RewardedInterstitialAdLoadОбратный вызов | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) | |
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Методы устарели
Следующие методы устарели без замены:
Сорт | Метод |
---|---|
Адаптер | loadInterscrollerAd() |
RtbАдаптер | loadRtbInterscrollerAd() |
Миграция с версии 22 на версию 23
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 22 и 23 Google Mobile Ads SDK.
Минимальный уровень Android API — 21.
Начиная с версии 23.0.0, для запуска Google Mobile Ads SDK все приложения должны иметь минимальный уровень Android API 21. Чтобы настроить уровень API, измените значение minSdkVersion
в файле build.gradle
уровня приложения на 21 или выше.
Устаревшие методы удалены/заменены
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( formats ) | AdLoader.Builder.withNativeAdOptions( nativead ) |
void MobileAds.setSameAppKeyEnabled() | логическое значение MobileAds.putPublisherFirstPartyIdEnabled() |
Миграция с версии 21 на версию 22
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 21 и 22 Google Mobile Ads SDK.
Используйте MobileAds.getVersion(), чтобы получить версию Google Mobile Ads SDK.
Метод MobileAds.getVersionString()
удален в версии 22.0.0 в пользу MobileAds.getVersion()
.
Новый метод возвращает ожидаемый внешний номер версии, например 22.0.0
. Дополнительную информацию об этом изменении см. в разделе Использование нового метода getVersion()
Google Mobile Ads SDK .
Удалены или заменены методы
В следующей таблице перечислены конкретные изменения в версии 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() |
MediationRewardedVideoAdapter | Адаптер |
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:
Обновите minSdkVersion до версии 19 или выше.
Начиная с версии 21.0.0, Google Mobile Ads SDK требует, чтобы все приложения работали на минимальном уровне Android API 19. Чтобы настроить уровень API, измените значение minSdkVersion
в файле сборки вашего приложения на 19 или выше.
Обеспечьте строгую возможность обнуления
При подготовке к обеспечению строгого допуска к нулю аннотации @NonNull
добавляются во все API, которые ранее явно не определяли допустимость к нулю.
Это изменение может привести к поломке приложений Kotlin и приложений, которые используют платформы проверки нулевых значений Java, если есть нарушения безопасности по нулевым значениям и ранее они не обрабатывали null
значения безопасным способом (см. документацию Kotlin по Null-safety ).
Удаление метода 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, настроить каскадный источник объявлений, который не является одним из источников объявлений, поддерживаемых AdMob.
Все пользовательские интерфейсы событий устарели в пользу класса Adapter
и интерфейса MediationAdLoadCallback
.
В следующей таблице перечислены соответствующие классы или интерфейсы, которые необходимо использовать для каждого пользовательского интерфейса событий, начиная с версии 21.0.0:
v20.0.0 Интерфейсы | v21.0.0 Класс/Интерфейс |
---|---|
CustomEvent | Адаптер |
CustomEventBanner | |
CustomEventМежстраничное объявление | |
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 форматы межстраничных объявлений, объявлений с вознаграждением, межстраничных объявлений с вознаграждением и объявлений при открытии приложения стандартизированы в соответствии с единым дизайном 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
никогда не предназначался для обработки кликов по рекламе, и использование этого обратного вызова для отчета о кликах не дает точных показателей. Например, щелчок по значку «Выбор рекламы», который запускал внешний браузер, вызывал обратный вызов, но не считался кликом.
Переименование классов
В следующей таблице перечислены конкретные имена классов, которые были изменены или удалены:
- Большинство классов, связанных с
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 | вознаграждено.RewardedAd |
вознаграждение.RewardedVideoAdListener | вознаграждено.RewardedAdLoadCallback и FullScreenContentCallback |
награда.RewardItem | вознаграждено.RewardItem |
вознаграждено.RewardedAdCallback | OnUserEarnedRewardListener |
форматы.UnifiedNativeAdView | роднойad.NativeAdView |
форматы.UnifiedNativeAd | nativead.NativeAd |
форматы.UnifiedNativeAdAssetNames | nativead.NativeAdAssetNames |
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener | nativead.NativeAd.OnNativeAdLoadedListener |
форматы.AdChoicesView | nativead.AdChoicesView |
formats.NativeAd.AdChoicesInfo | nativead.NativeAd.AdChoicesInfo |
форматы.MediaView | роднойad.MediaView |
форматы.NativeAdViewHolder | роднойad.NativeAdViewHolder |
форматы.NativeAdOptions | роднойad.NativeAdOptions |
форматы.NativeCustomTemplateAd | роднойad.NativeCustomFormatAd |
formats.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener | nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener |
MobileAds.Настройки | Удаленный |
даблклик.PublisherAdRequest | admanager.AdManagerAdRequest |
даблклик.PublisherAdView | admanager.AdManagerAdView |
форматы.PublisherAdViewOptions | форматы.AdManagerAdViewOptions |
doubleclick.PublisherInterstitialAd | admanager.AdManagerInterstitialAd |
Межстраничное объявление | interstitial.InterstitialAd |
Нативэкспрессадвиев | Удаленный |
instream.InstreamAd | Удаленный |
посредничество.admob.AdMobExtras | Удаленный |
Коррелятор | Удаленный |
search.SearchAdRequest | Удаленный |
Интерфейс AdRequest.TagForUnderAgeOfConsent | Удаленный |
Интерфейс AdRequest.MaxAdContentRating | Удаленный |
форматы.NativeAppInstallAd | родной.NativeAd |
форматы.NativeAppInstallAdView | родной.NativeAdView |
посредничество.NativeAppInstallAdMapper | посредничество.UnifiedNativeAdMapper |
форматы.NativeContentAd | родной.NativeAd |
форматы.NativeContentAdView | родной.NativeAdView |
посредничество.NativeContentAdMapper | посредничество.UnifiedNativeAdMapper |
Методы удалены/заменены
В следующей таблице перечислены конкретные изменения в версии 20.0.0:
- Из класса MobileAds удалены устаревшие методы инициализации.
- Некоторые методы из класса
AdRequest.Builder()
были удалены или перенесены в классRequestConfiguration
. - API RewardedAd и InterstitialAd были обновлены для совместимости со всеми полноэкранными форматами.
- Функции коррелятора были удалены.
Сорт | API версии 19.5.0 | API версии 20.0.0 | Примечания |
---|---|---|---|
Размер объявления | getPortraitBanner AdSizeWithWidth() | getPortraitAnchored AdaptiveBannerAdSize() | |
getLandscapeBanner AdSizeWithWidth() | getLandscapeAnchored AdaptiveBannerAdSize() | ||
getCurrentOrientation BannerAdSizeWithWidth() | getCurrentOrientationAnchored AdaptiveBannerAdSize() | ||
Мобильная реклама | инициализировать (Контекст, Строка) | MobileAds.initialize(Контекст, Прослушиватель OnInitializationComplete) | Идентификатор приложения теперь установлен в AndroidManifest.xml. |
инициализировать(Контекст, Строка, MobileAds.Settings) | инициализировать (Контекст, прослушиватель OnInitializationComplete) | Класс Settings устарел. | |
getRewardedVideo AdInstance() | Удаленный | Вместо этого используйте API RewardedAd. | |
прослушиватель рекламы | onAdFailedToLoad (целое) | onAd FailedToLoad (LoadAdError) | |
onAdLeftApplication() | Удаленный | Форматы полноэкранных объявлений используют FullscreenContentCallback вместо AdListener, а для FullscreenContentCallback не существует эквивалентного метода. Метод был удален из AdListener. | |
Видеоконтроллер | getAspectRatio() | MediaContent.getAspectRatio() | |
Запрос объявления | getGender() | Удаленный | |
получитьДень Рождения() | Удаленный | ||
getNetworkExtras() | Удаленный | ||
setManualImpressions включен() | Удаленный | ||
обновлениеКоррелятор() | Удаленный | См. раздел «Фильтрация рекламного контента» . | |
AdRequest.Builder | УстановитьДень Рождения() | Удаленный | |
setGender() | Удаленный | ||
setIsDesignedForFamilies() | Удаленный | См . руководство . | |
добавитьТестдевице() | RequestConfiguration.Builder.setTestDeviceIds() | См. Включение тестовых объявлений . | |
тегForChildDirectedTreatment() | RequestConfiguration.Builder.setTagFor ChildDirectedTreatment() | См. раздел «Фильтрация рекламного контента» . | |
setTagFor UnderAgeOfConsent() | RequestConfiguration.Builder.setTagFor UnderAgeOfConsent() | ||
setMaxAdContentRating() | RequestConfiguration.Builder.setMaxAdContentRating() | ||
Просмотр рекламы | getMediationAdapter ClassName() | ResponseInfo.getMediationAdapter ИмяКласса() | Объект ResponseInfo доступен с помощью метода AdView getResponseInfo() . |
Нативные параметры рекламы | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
Объявление с вознаграждением | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | RewardedAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы. |
loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Удаленный | Обратный вызов метода статической загрузки предоставляет уже загруженное объявление. | |
показать (Активность, RewardedAdCallback) | показать (Активность, OnUserEarnedRewardListener) | Этот метод отображения соответствует более широкому подходу полноэкранного формата. | |
Обратный вызов RewardedAdLoad | onRewardedAd FailedToLoad (целое) | onAd FailedToLoad (LoadAdError) | |
onRewardedAd FailedToLoad (LoadAdError) | onAd FailedToLoad (LoadAdError) | ||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
ПриложениеOpenAdLoadОбратный вызов | onAppOpenAd FailedToLoad (целое) | 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 загружен (RewardedInterstitialAd) | ||
Межстраничное объявление | новое межстраничное объявление() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | InterstitialAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы. |
setAdListener() | |||
DynamicHeightSearchЗапрос объявления | getNetworkExtras() | Удаленный | Класс NetworkExtras устарел. |
AdLoader | дляContentAd() | Удаленный | |
дляAppInstallAd() | Удаленный | ||
сКоррелятор() | Удаленный | ||
getMediationAdapter ClassName() | Удаленный |
На этой странице описаны миграции для текущей и предыдущих версий.
Миграция с версии 23 на версию 24
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 23 и 24 Google Mobile Ads SDK.
Минимальный уровень Android API — 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
Методы удалены
Следующие методы были удалены без замены:
Сорт | Метод |
---|---|
RewardedInterstitialAdLoadОбратный вызов | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) | |
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Методы устарели
Следующие методы устарели без замены:
Сорт | Метод |
---|---|
Адаптер | loadInterscrollerAd() |
RtbАдаптер | loadRtbInterscrollerAd() |
Миграция с версии 22 на версию 23
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 22 и 23 Google Mobile Ads SDK.
Минимальный уровень Android API — 21.
Начиная с версии 23.0.0, для запуска Google Mobile Ads SDK все приложения должны иметь минимальный уровень Android API 21. Чтобы настроить уровень API, измените значение minSdkVersion
в файле build.gradle
уровня приложения на 21 или выше.
Устаревшие методы удалены/заменены
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( formats ) | AdLoader.Builder.withNativeAdOptions( nativead ) |
void MobileAds.setSameAppKeyEnabled() | логическое значение MobileAds.putPublisherFirstPartyIdEnabled() |
Миграция с версии 21 на версию 22
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 21 и 22 Google Mobile Ads SDK.
Используйте MobileAds.getVersion(), чтобы получить версию Google Mobile Ads SDK.
Метод MobileAds.getVersionString()
удален в версии 22.0.0 в пользу MobileAds.getVersion()
.
Новый метод возвращает ожидаемый внешний номер версии, например 22.0.0
. Дополнительную информацию об этом изменении см. в разделе Использование нового метода getVersion()
Google Mobile Ads SDK .
Удалены или заменены методы
В следующей таблице перечислены конкретные изменения в версии 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() |
MediationRewardedVideoAdapter | Адаптер |
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:
Обновите minSdkVersion до версии 19 или выше.
Начиная с версии 21.0.0, Google Mobile Ads SDK требует, чтобы все приложения работали на минимальном уровне Android API 19. Чтобы настроить уровень API, измените значение minSdkVersion
в файле сборки вашего приложения на 19 или выше.
Обеспечьте строгую возможность обнуления
При подготовке к обеспечению строгого допуска к нулю аннотации @NonNull
добавляются во все API, которые ранее явно не определяли допустимость к нулю.
Это изменение может привести к поломке приложений Kotlin и приложений, которые используют платформы проверки нулевых значений Java, если есть нарушения безопасности по нулевым значениям и ранее они не обрабатывали null
значения безопасным способом (см. документацию Kotlin по Null-safety ).
Удаление метода 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, настроить каскадный источник объявлений, который не является одним из источников объявлений, поддерживаемых AdMob.
Все пользовательские интерфейсы событий устарели в пользу класса Adapter
и интерфейса MediationAdLoadCallback
.
В следующей таблице перечислены соответствующие классы или интерфейсы, которые необходимо использовать для каждого пользовательского интерфейса событий, начиная с версии 21.0.0:
v20.0.0 Интерфейсы | v21.0.0 Класс/Интерфейс |
---|---|
CustomEvent | Адаптер |
CustomEventBanner | |
CustomEventМежстраничное объявление | |
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 форматы межстраничных объявлений, объявлений с вознаграждением, межстраничных объявлений с вознаграждением и объявлений при открытии приложения стандартизированы в соответствии с единым дизайном 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
никогда не предназначался для обработки кликов по рекламе, и использование этого обратного вызова для отчета о кликах не дает точных показателей. Например, щелчок по значку «Выбор рекламы», который запускал внешний браузер, вызывал обратный вызов, но не считался кликом.
Переименование классов
В следующей таблице перечислены конкретные имена классов, которые были изменены или удалены:
- Большинство классов, связанных с
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 | вознаграждено.RewardedAd |
вознаграждение.RewardedVideoAdListener | вознаграждено.RewardedAdLoadCallback и FullScreenContentCallback |
награда.RewardItem | вознаграждено.RewardItem |
вознаграждено.RewardedAdCallback | OnUserEarnedRewardListener |
форматы.UnifiedNativeAdView | роднойad.NativeAdView |
форматы.UnifiedNativeAd | nativead.NativeAd |
форматы.UnifiedNativeAdAssetNames | nativead.NativeAdAssetNames |
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener | nativead.NativeAd.OnNativeAdLoadedListener |
форматы.AdChoicesView | nativead.AdChoicesView |
formats.NativeAd.AdChoicesInfo | nativead.NativeAd.AdChoicesInfo |
форматы.MediaView | роднойad.MediaView |
форматы.NativeAdViewHolder | роднойad.NativeAdViewHolder |
форматы.NativeAdOptions | роднойad.NativeAdOptions |
форматы.NativeCustomTemplateAd | роднойad.NativeCustomFormatAd |
formats.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener | nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener |
MobileAds.Настройки | Удаленный |
даблклик.PublisherAdRequest | admanager.AdManagerAdRequest |
даблклик.PublisherAdView | admanager.AdManagerAdView |
форматы.PublisherAdViewOptions | форматы.AdManagerAdViewOptions |
doubleclick.PublisherInterstitialAd | admanager.AdManagerInterstitialAd |
Межстраничное объявление | interstitial.InterstitialAd |
Нативэкспрессадвиев | Удаленный |
instream.InstreamAd | Удаленный |
посредничество.admob.AdMobExtras | Удаленный |
Коррелятор | Удаленный |
search.SearchAdRequest | Удаленный |
Интерфейс AdRequest.TagForUnderAgeOfConsent | Удаленный |
Интерфейс AdRequest.MaxAdContentRating | Удаленный |
форматы.NativeAppInstallAd | родной.NativeAd |
форматы.NativeAppInstallAdView | родной.NativeAdView |
посредничество.NativeAppInstallAdMapper | посредничество.UnifiedNativeAdMapper |
форматы.NativeContentAd | родной.NativeAd |
форматы.NativeContentAdView | родной.NativeAdView |
посредничество.NativeContentAdMapper | посредничество.UnifiedNativeAdMapper |
Методы удалены/заменены
В следующей таблице перечислены конкретные изменения в версии 20.0.0:
- Из класса MobileAds удалены устаревшие методы инициализации.
- Некоторые методы из класса
AdRequest.Builder()
были удалены или перенесены в классRequestConfiguration
. - API RewardedAd и InterstitialAd были обновлены для совместимости со всеми полноэкранными форматами.
- Функции коррелятора были удалены.
Сорт | API версии 19.5.0 | API версии 20.0.0 | Примечания |
---|---|---|---|
Размер объявления | getPortraitBanner AdSizeWithWidth() | getPortraitAnchored AdaptiveBannerAdSize() | |
getLandscapeBanner AdSizeWithWidth() | getLandscapeAnchored AdaptiveBannerAdSize() | ||
getCurrentOrientation BannerAdSizeWithWidth() | getCurrentOrientationAnchored AdaptiveBannerAdSize() | ||
Мобильная реклама | инициализировать (Контекст, Строка) | MobileAds.initialize(Контекст, Прослушиватель OnInitializationComplete) | Идентификатор приложения теперь установлен в AndroidManifest.xml. |
инициализировать(Контекст, Строка, MobileAds.Settings) | инициализировать (Контекст, прослушиватель OnInitializationComplete) | Класс Settings устарел. | |
getRewardedVideo AdInstance() | Удаленный | Вместо этого используйте API RewardedAd. | |
прослушиватель рекламы | onAdFailedToLoad (целое) | onAd FailedToLoad (LoadAdError) | |
onAdLeftApplication() | Удаленный | Форматы полноэкранных объявлений используют FullscreenContentCallback вместо AdListener, а для FullscreenContentCallback не существует эквивалентного метода. Метод был удален из AdListener. | |
Видеоконтроллер | getAspectRatio() | MediaContent.getAspectRatio() | |
Запрос объявления | getGender() | Удаленный | |
получитьДень Рождения() | Удаленный | ||
getNetworkExtras() | Удаленный | ||
setManualImpressions включен() | Удаленный | ||
обновлениеКоррелятор() | Удаленный | См. раздел «Фильтрация рекламного контента» . | |
AdRequest.Builder | УстановитьДень Рождения() | Удаленный | |
setGender() | Удаленный | ||
setIsDesignedForFamilies() | Удаленный | См . руководство . | |
добавитьТестдевице() | RequestConfiguration.Builder.setTestDeviceIds() | См. Включение тестовых объявлений . | |
тегForChildDirectedTreatment() | RequestConfiguration.Builder.setTagFor ChildDirectedTreatment() | См. раздел «Фильтрация рекламного контента» . | |
setTagFor UnderAgeOfConsent() | RequestConfiguration.Builder.setTagFor UnderAgeOfConsent() | ||
setMaxAdContentRating() | RequestConfiguration.Builder.setMaxAdContentRating() | ||
Просмотр рекламы | getMediationAdapter ClassName() | ResponseInfo.getMediationAdapter ИмяКласса() | Объект ResponseInfo доступен с помощью метода AdView getResponseInfo() . |
Нативные параметры рекламы | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
Объявление с вознаграждением | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | RewardedAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы. |
loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Удаленный | Обратный вызов метода статической загрузки предоставляет уже загруженное объявление. | |
показать (Активность, RewardedAdCallback) | показать (Активность, OnUserEarnedRewardListener) | Этот метод показа соответствует более широкому подходу полноэкранного формата. | |
Обратный вызов RewardedAdLoad | onRewardedAd FailedToLoad (целое) | onAd FailedToLoad (LoadAdError) | |
onRewardedAd FailedToLoad (LoadAdError) | onAd FailedToLoad (LoadAdError) | ||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
ПриложениеOpenAdLoadОбратный вызов | onAppOpenAd FailedToLoad (целое) | 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 загружен (RewardedInterstitialAd) | ||
Межстраничное объявление | новое межстраничное объявление() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | InterstitialAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы. |
setAdListener() | |||
DynamicHeightSearchЗапрос объявления | getNetworkExtras() | Удаленный | Класс NetworkExtras устарел. |
AdLoader | дляContentAd() | Удаленный | |
дляAppInstallAd() | Удаленный | ||
сКоррелятор() | Удаленный | ||
getMediationAdapter ClassName() | Удаленный |