На этой странице описаны переходы на текущую и предыдущие версии.
Переход с версии 24 на версию 25
В следующих подразделах описаны несовместимые изменения и различия в поведении между основными версиями 24 и 25 Google Mobile Ads SDK (Legacy).
Минимальный уровень Android API – 24.
Начиная с версии 25.5.0, Google Mobile Ads SDK (Legacy) требует, чтобы все приложения работали на Android с минимальным уровнем API 24. Чтобы изменить уровень API, задайте для параметра minSdk в файле build.gradle на уровне приложения значение 24 или выше.
Удалены устаревшие обратные вызовы объявлений
Из следующих классов были удалены устаревшие обратные вызовы объявлений:
| Класс | Удалены обратные звонки | Замена |
|---|---|---|
| SignalCallbacks |
onFailure(String)onAdFailedToShow(String)
|
onFailure(AdError)onAdFailedToShow(AdError)
|
| MediationAdLoadCallback | ||
| MediationInterstitialAdCallback | ||
| MediationRewardedAdCallback |
Изменения в API для фиксированных адаптивных баннеров
В версии 25.0.0 прекращена поддержка существующих API для фиксированных адаптивных баннеров и добавлены API для больших фиксированных адаптивных баннеров. Google Mobile Ads SDK (Legacy) может показывать видеорекламу в баннерах, используя новые API для больших фиксированных адаптивных баннеров.
В таблице ниже перечислены устаревшие API для определения размеров и их замены.
| v24 (поддержка прекращена) | v25 (замена) |
|---|---|
getCurrentOrientationAnchoredAdaptiveBannerAdSize(Context, int) |
getLargeAnchoredAdaptiveBannerAdSize(Context, int) |
getLandscapeAnchoredAdaptiveBannerAdSize(Context, int) |
getLargeLandscapeAnchoredAdaptiveBannerAdSize(Context, int) |
getPortraitAnchoredAdaptiveBannerAdSize(Context context, int width) |
getLargePortraitAnchoredAdaptiveBannerAdSize(Context context, int width) |
Удаление класса mediation.VersionInfo
Класс VersionInfo в пакете com.google.android.gms.ads.mediation удален. Вместо него используйте пакет com.google.android.gms.ads.VersionInfo.
Удаление метода getConfiguration() в классе RtbSignalData
Удален устаревший метод getConfiguration() API в RtbSignalData.
Вместо него используйте метод getConfigurations(), который возвращает список List<MediationConfiguration>.
Переход с версии 23 на версию 24
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 23 и 24 Google Mobile Ads SDK (Legacy).
Минимальный уровень Android API – 23.
Начиная с версии 24.0.0, Google Mobile Ads SDK (Legacy) требует, чтобы все приложения работали на 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.
Как задать специальные параметры таргетинга
Чтобы задать таргетинг со специальными настройками для запроса объявления, используйте addCustomTargeting().
Удалены устаревшие API ориентации для объявлений при запуске приложений
- Удалены методы
AppOpenAd.load(), принимающие параметр ориентации. Вместо этого используйте методыAppOpenAd.load(), которые не принимают ориентацию. - Удалено перечисление
AppOpenAdOrientation.
Упрощенный обратный вызов для адаптеров медиации
В версии 24.0.0 в MediationRewardedAdCallback добавлен обратный вызов onUserEarnedReward(), а onUserEarnedReward(RewardItem) объявлен устаревшим.
Адаптеры медиации должны начинать вызывать onUserEarnedReward(), когда пользователь получает вознаграждение.
При пересылке обратных вызовов из адаптеров медиации все версии Google Mobile Ads SDK (Legacy) возвращают вознаграждение, заданное в интерфейсе Менеджера рекламы, в OnUserEarnedRewardListener.
Курсы удалены
Следующие классы были удалены без замены:
DynamicHeightSearchAdRequestSearchAdRequestSearchAdView
Удаленные методы
Следующие методы были удалены без замены:
| Класс | Метод |
|---|---|
| RewardedInterstitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) |
|
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Устаревшие методы
Следующие методы устарели и не имеют аналогов:
| Класс | Метод |
|---|---|
| Adapter | loadInterscrollerAd() |
| RtbAdapter | loadRtbInterscrollerAd() |
Переход с версии 22 на версию 23
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 22 и 23 Google Mobile Ads SDK (Legacy).
Минимальный уровень Android API – 21.
Начиная с версии 23.0.0, Google Mobile Ads SDK (Legacy) требует, чтобы для запуска всех приложений использовался минимальный уровень API Android 21. Чтобы изменить уровень API, задайте для параметра minSdkVersion в файле build.gradle на уровне приложения значение 21 или выше.
AdManagerAdRequest.Builder методы, унаследованные от суперкласса, можно объединять в цепочки.
В версии 23.0.0 методы AdManagerAdRequest.Builder, унаследованные от родительского класса, можно объединять в цепочки, чтобы создать объект AdManagerAdRequest с помощью одного вызова:
Java
AdManagerAdRequest request = new AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build(); // Builds an AdManagerAdRequest.
Kotlin
var request = AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build() // Builds an AdManagerAdRequest.
Удаление или замена устаревших методов
| 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(com.google.android.gms.ads.formats.NativeAdOptions)
|
AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.nativead.NativeAdOptions)
|
| void MobileAds.setSameAppKeyEnabled() | boolean MobileAds.putPublisherFirstPartyIdEnabled() |
Переход с версии 21 на версию 22
В следующих подразделах описаны критические изменения и различия в поведении между основными версиями 21 и 22 Google Mobile Ads SDK (Legacy).
Используйте MobileAds.getVersion(), чтобы получить версию Google Mobile Ads SDK (Legacy).
Метод MobileAds.getVersionString() удален в версии 22.0.0. Вместо него используется метод MobileAds.getVersion().
Новый метод возвращает ожидаемый внешний номер версии, например 22.0.0. Подробнее о новом методе Google Mobile
Ads SDKgetVersion()…
Удаление устаревшего метода NativeCustomFormatAd.getVideoMediaView()
В версии 21 метод Google Mobile Ads SDK (Legacy) позволяет получить медиаобъект для нативного собственного формата объявлений.NativeCustomFormatAd.getVideoMediaView()
Начиная с версии 22, вы можете создать собственный элемент MediaView, задать его медиаконтент и использовать MediaContent.getVideoController(), чтобы получить доступ к элементам управления видео.
v22
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); MediaContent mediaContent = ad.getMediaContent(); if (mediaContent != null && mediaContent.hasVideoContent()) { // Create a MediaView and set its media content. MediaView mediaView = new MediaView(mediaPlaceholder.getContext()); mediaView.setMediaContent(mediaContent); mediaPlaceholder.addView(mediaView); } }
v21
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); VideoController videoController = ad.getVideoController(); if (videoController.hasVideoContent()) { // Add the media view provided by the native ad. mediaPlaceholder.addView(ad.getVideoMediaView()); } }
Подробнее о пользовательских нативных объявлениях…
Удаленные или замененные методы
В таблице ниже перечислены изменения в версии 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 | Adapter |
| 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 (Legacy).
Обновите minSdkVersion до версии 19 или более новой.
Начиная с версии 21.0.0, для работы Google Mobile Ads SDK (Legacy) требуется, чтобы все приложения были на уровне API 19 или выше. Чтобы изменить уровень API, задайте для параметра minSdkVersion в файле сборки приложения значение 19 или выше.
Как включить строгую проверку на допустимость значения NULL
В рамках подготовки к обязательному использованию строгой допустимости значения NULL во все API, в которых ранее не было явного определения допустимости значения NULL, добавлены аннотации @NonNull.
Это изменение может привести к сбоям в работе приложений Kotlin и приложений, в которых используются фреймворки для проверки на наличие нулевых значений, если в них есть нарушения безопасности нулевых значений и ранее значения null обрабатывались небезопасным образом (см. документацию Kotlin по безопасности нулевых значений).
Удаление метода addNetworkExtras()
Метод addNetworkExtras(), который передает дополнительные параметры в виде экземпляра NetworkExtras определенному адаптеру рекламной сети, был объявлен устаревшим в версии 20.3.0 SDK и будет удален в версии 21.0.0. Вместо него используйте метод addNetworkExtrasBundle() из того же класса AdRequest.Builder.
Удаление методов определения местоположения
В версии 21.0.0 будут удалены следующие методы определения местоположения:
- Метод
setLocation(Location location)в классеAdRequest.Builder, который задает местоположение пользователя для таргетинга на медиацию. - Метод
getLocation()в классеAdRequest, который возвращает информацию о местоположении пользователя, ранее переданную методуsetLocation(Location location). - Метод
getLocation()в классеMediationAdConfiguration, который возвращает местоположение пользователя, если оно определено вAdRequest.
Google не использует данные о местоположении для таргетинга рекламы. Если сторонним рекламным сетям требуется эта информация, вы можете передать ее с помощью сторонних API.
Прекращение поддержки интерфейсов специальных событий
Специальные события позволяют издателям, использующим медиацию, настроить источник объявлений в каскаде, который не входит в число поддерживаемых источников объявлений Ad Manager.
Все интерфейсы custom
event устарели. Вместо них рекомендуется использовать класс Adapter и интерфейс MediationAdLoadCallback.
В таблице ниже перечислены классы и интерфейсы, которые необходимо использовать для каждого интерфейса специального события, начиная с версии 21.0.0:
| Интерфейсы версии 20.0.0 | v21.0.0 Class/ Interface |
|---|---|
| CustomEvent | Adapter |
| CustomEventBanner | |
| CustomEventInterstitial | |
| CustomEventNative | |
| CustomEventBannerListener |
Adapter,
|
| 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.
Прекращение поддержки смарт-баннеров в пользу адаптивных баннеров
Смарт-баннеры больше не поддерживаются. Вместо них рекомендуется использовать адаптивные баннеры. Адаптивные баннеры более эффективны и позволяют более гибко настраивать ширину объявлений. Если вы хотите и дальше использовать баннеры во всю ширину, это можно сделать с помощью адаптивных баннеров, как показано в следующем фрагменте кода:
Java
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); } }
Kotlin
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 Class | Класс 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 |
| formats.UnifiedNativeAdView | nativead.NativeAdView |
| formats.UnifiedNativeAd | nativead.NativeAd |
| formats.UnifiedNativeAdAssetNames | nativead.NativeAdAssetNames |
| formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener | nativead.NativeAd.OnNativeAdLoadedListener |
| formats.AdChoicesView | nativead.AdChoicesView |
| formats.NativeAd.AdChoicesInfo | nativead.NativeAd.AdChoicesInfo |
| formats.MediaView | nativead.MediaView |
| formats.NativeAdViewHolder | nativead.NativeAdViewHolder |
| formats.NativeAdOptions | nativead.NativeAdOptions |
| formats.NativeCustomTemplateAd | nativead.NativeCustomFormatAd |
| formats.NativeCustomTemplateAd |
nativead.NativeCustomFormatAd |
| MobileAds.Settings | Удалено |
| doubleclick.PublisherAdRequest | admanager.AdManagerAdRequest |
| doubleclick.PublisherAdView | admanager.AdManagerAdView |
| formats.PublisherAdViewOptions | formats.AdManagerAdViewOptions |
| doubleclick.PublisherInterstitialAd | admanager.AdManagerInterstitialAd |
| InterstitialAd | interstitial.InterstitialAd |
| NativeExpressAdView | Удалено |
| instream.InstreamAd | Удалено |
| mediation.admob.AdMobExtras | Удалено |
| Correlator | Удалено |
| search.SearchAdRequest | Удалено |
| Интерфейс AdRequest.TagForUnderAgeOfConsent | Удалено |
| Интерфейс AdRequest.MaxAdContentRating | Удалено |
| formats.NativeAppInstallAd | native.NativeAd |
| formats.NativeAppInstallAdView | native.NativeAdView |
| mediation.NativeAppInstallAdMapper | mediation.UnifiedNativeAdMapper |
| formats.NativeContentAd | native.NativeAd |
| formats.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 |
getPortraitAnchored |
|
| getLandscapeBanner |
getLandscapeAnchored |
||
| getCurrentOrientation |
getCurrentOrientationAnchored |
||
| MobileAds | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete |
Идентификатор приложения задан в файле AndroidManifest.xml. |
| initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
Класс Settings устарел. | |
| getRewardedVideo |
Удалено | Вместо него используйте RewardedAd API. | |
| AdListener | onAdFailedToLoad(int) | onAd |
|
| onAdLeftApplication() | Удалено | В полноэкранных форматах объявлений вместо AdListener используется FullscreenContentCallback, и в FullscreenContentCallback нет эквивалентного метода. Метод удален из AdListener. | |
| VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
| PublisherAdRequest | getGender() | Удалено | |
| getBirthday() | Удалено | ||
| getNetworkExtras() | Удалено | ||
| setManualImpressions |
Удалено | ||
| updateCorrelator() | Удалено | Подробнее о фильтрации содержания объявления… | |
| PublisherAdRequest.Builder | setBirthday() | Удалено | |
| setGender() | Удалено | ||
| setIsDesignedForFamilies() | Удалено | руководство. | |
| addTestDevice() | RequestConfiguration |
Подробнее о том, как включить тестовые объявления… | |
| tagForChildDirectedTreatment() | RequestConfiguration |
Подробнее о фильтрации содержания объявления… | |
| setTagFor |
RequestConfiguration |
||
| setMaxAdContentRating() | RequestConfiguration |
||
| AdView | getMediationAdapter |
ResponseInfo |
Объект ResponseInfo доступен с помощью метода AdView, getResponseInfo().
|
| NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
| getImageOrientation | getMediaAspectRatio() | ||
| RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | Теперь в RewardedAd используется тот же статический подход к загрузке, что и в других полноэкранных форматах. |
| loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
| isLoaded() | Удалено | Обратный вызов из статического метода загрузки предоставляет уже загруженное объявление. | |
| show(Activity, RewardedAdCallback) | show(Activity, OnUserEarnedRewardListener) | Этот метод показа соответствует общему подходу к полноэкранному формату. | |
| RewardedAdLoadCallback | onRewardedAd |
onAd |
|
| onRewardedAd |
onAd |
||
| onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
| AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
| onAppOpenAd |
onAd |
||
| onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
| RewardedInterstitialAdLoad |
onRewardedInterstitialAd |
onAd |
|
| onRewardedInterstitialAd |
onAd |
||
| onRewardedInterstitialAd |
onAd |
||
| PublisherInterstitialAd | new PublisherInterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | Теперь для загрузки межстраничных объявлений используется тот же статический подход, что и для других полноэкранных форматов. |
| setAdListener() | |||
| DynamicHeightSearchAd |
getNetworkExtras() | Удалено | Класс NetworkExtras больше не поддерживается. |
| AdLoader | forContentAd() | Удалено | |
| forAppInstallAd() | Удалено | ||
| withCorrelator() | Удалено | ||
| getMediationAdapter |
Удалено |