На этой странице описан перенос для текущей и предыдущих версий.
Переход с версии 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 | v23.0.0 API |
|---|---|
| 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).
Чтобы получить версию Google Mobile Ads SDK (Legacy), используйте MobileAds.getVersion().
Метод MobileAds.getVersionString() удален в версии 22.0.0. Вместо него используйте MobileAds.getVersion().
Новый метод возвращает ожидаемый номер внешней версии, например 22.0.0. Подробную информацию об этом изменении вы найдете в статье Использование нового метода Google Mobile Ads SDK getVersion().
Удаление устаревшего метода 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 | Адаптер |
| 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) требуется, чтобы все приложения использовали Android API уровня 19 или выше. Чтобы изменить уровень API, укажите значение minSdkVersion в файле сборки приложения, равное 19 или выше.
Принудительно использовать строгую допустимость значения NULL
Чтобы обеспечить строгое соблюдение допустимости значения 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, чтобы передавать информацию сторонним рекламным сетям.
Прекращение поддержки интерфейсов специальных событий
Специальные события позволяют издателям, использующим медиацию, настроить источник объявлений в каскаде, который не входит в число поддерживаемых источников объявлений Менеджера рекламы.
Все интерфейсы специальных событий заменены классом Adapter и интерфейсом MediationAdLoadCallback.
В таблице ниже перечислены классы и интерфейсы, которые нужно использовать для каждого интерфейса пользовательского события, начиная с версии 21.0.0.
| Интерфейсы версии 20.0.0 | Класс/интерфейс в версии 21.0.0 |
|---|---|
| CustomEvent | Адаптер |
| 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 | Класс 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 | v20.0.0 API | Примечания |
|---|---|---|---|
| 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) | Теперь в InterstitialAd используется тот же подход со статической загрузкой, что и в других полноэкранных форматах. |
| setAdListener() | |||
| DynamicHeightSearchAd |
getNetworkExtras() | Удалено | Класс NetworkExtras больше не поддерживается. |
| AdLoader | forContentAd() | Удалено | |
| forAppInstallAd() | Удалено | ||
| withCorrelator() | Удалено | ||
| getMediationAdapter |
Удалено |