На этой странице описана миграция между текущей и предыдущими версиями.
Переход с версии 23 на версию 24
В следующих подразделах описаны существенные изменения и различия в поведении между основными версиями 23 и 24 SDK для мобильной рекламы Google.
Минимальный уровень API Android — 23.
Начиная с версии 24.0.0, Google Mobile Ads SDK требует, чтобы все приложения работали как минимум на уровне Android API 23. Чтобы изменить уровень API, измените значение minSdk в файле build.gradle на уровне приложения на 23 или выше.
Изменения в оптимизированной инициализации и загрузке.
По умолчанию флаги OPTIMIZE_INITIALIZATION и OPTIMIZE_AD_LOADING установлены в true . Дополнительную информацию об этих флагах см. в разделе «Оптимизация инициализации и загрузки» .
Удалены зависимости firebase-ads и firebase-ads-lite.
Начиная с версии 24.0.0, в релизах SDK больше не используются зависимости firebase-ads и firebase-ads-lite . Вместо них используйте зависимость play-services-ads .
Удалены устаревшие API для определения ориентации экрана при открытии рекламы в приложении.
- Удалены методы
AppOpenAd.load(), принимающие в качестве входного параметра ориентацию экрана. Вместо них используйте методыAppOpenAd.load(), которые не принимают ориентацию. - Удалён перечислимый объект
AppOpenAdOrientation.
Упрощенная функция обратного вызова для вознаграждения адаптеров медиации.
В версии 24.0.0 добавлен коллбэк onUserEarnedReward() в MediationRewardedAdCallback и объявлен устаревшим onUserEarnedReward(RewardItem) . Адаптеры Mediation должны начинать вызывать onUserEarnedReward() когда пользователь получает вознаграждение.
При переадресации обратных вызовов от адаптеров медиации все версии SDK Google Mobile Ads возвращают вознаграждение, определенное в пользовательском интерфейсе AdMob в OnUserEarnedRewardListener .
Удалены классы
Следующие классы были удалены без замены:
-
DynamicHeightSearchAdRequest -
SearchAdRequest -
SearchAdView
Удаленные методы
Следующие методы были удалены без замены:
| Сорт | Метод |
|---|---|
| RewardedIntertitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) | |
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Устаревшие методы
Следующие методы устарели и не подлежат замене:
| Сорт | Метод |
|---|---|
| Адаптер | loadInterscrollerAd() |
| RtbAdapter | loadRtbInterscrollerAd() |
Переход с версии 22 на версию 23
В следующих подразделах описаны существенные изменения и различия в поведении между основными версиями 22 и 23 SDK Google Mobile Ads.
Минимальный уровень API Android — 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() | boolean MobileAds.putPublisherFirstPartyIdEnabled() |
Переход с версии 21 на версию 22
В следующих подразделах описаны существенные изменения и различия в поведении между основными версиями 21 и 22 SDK для мобильной рекламы Google.
Используйте MobileAds.getVersion() для получения версии SDK Google Mobile Ads.
Метод 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() |
| 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 SDK Google Mobile Ads:
Обновите minSdkVersion до версии 19 или выше.
Начиная с версии 21.0.0, для работы Google Mobile Ads SDK всем приложениям требуется как минимум Android API уровня 19. Чтобы изменить уровень API, измените значение параметра minSdkVersion в файле сборки вашего приложения на 19 или выше.
Обеспечить строгую возможность обнуления.
В рамках подготовки к обеспечению строгой допустимости значений null, во все API, которые ранее не содержали явного определения допустимости значений null, добавлены аннотации @NonNull .
Это изменение может привести к сбоям в работе приложений Kotlin и приложений, использующих Java-фреймворки для проверки на null, если будут обнаружены нарушения безопасности при работе с null значениями, которые ранее не обрабатывались безопасным способом (см. документацию Kotlin по безопасности при работе с нулевыми значениями ).
Удаление метода addNetworkExtras()
Метод addNetworkExtras() , передающий дополнительные параметры в виде экземпляра NetworkExtras конкретному адаптеру рекламной сети, был объявлен устаревшим в версии SDK 20.3.0 и будет удален в версии 21.0.0. Вместо него используйте метод addNetworkExtrasBundle() из того же класса AdRequest.Builder .
Удаление методов определения местоположения
В версии 21.0.0 будут удалены следующие методы определения местоположения:
- Метод
setLocation(Location location)в классеAdRequest.Builderустанавливает местоположение пользователя для целей таргетинга в контекстной рекламе. - Метод
getLocation()в классеAdRequestвозвращает информацию о местоположении пользователя, ранее переданную в методsetLocation(Location location). - Метод
getLocation()в классеMediationAdConfigurationвозвращает местоположение пользователя, если оно определено вAdRequest.
Данные о местоположении не используются Google для таргетирования рекламы. При необходимости для предоставления этой информации сторонним рекламным сетям следует использовать API сторонних сервисов.
Устаревание пользовательских интерфейсов событий
Пользовательские события позволяют издателям, использующим AdMob Mediation, настроить каскадную показ рекламы, которая не входит в число поддерживаемых AdMob источников рекламы .
Все пользовательские интерфейсы событий устарели и заменены классом Adapter и интерфейсом MediationAdLoadCallback .
В таблице ниже указан соответствующий класс или интерфейс, который необходимо использовать для каждого пользовательского интерфейса событий, начиная с версии 21.0.0:
| Интерфейсы v20.0.0 | v21.0.0 Класс/Интерфейс |
|---|---|
| Пользовательское событие | Адаптер |
| CustomEventBanner | |
| CustomEventIntersticial | |
| 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.
Умное удаление баннеров в пользу адаптивных баннеров.
Использование «умных» баннеров устарело, в пользу «адаптивных» баннеров . Адаптивные баннеры обеспечивают более высокую производительность и большую гибкость в настройке ширины объявления. Если вы предпочитаете продолжать использовать баннеры во всю ширину экрана, это по-прежнему можно сделать с помощью адаптивных баннеров, как показано в следующем фрагменте кода:
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); } }
Котлин
class MyActivity : AppCompatActivity() { ... private val adaptiveAdSize: AdSize get() { val display = windowManager.defaultDisplay val outMetrics = DisplayMetrics() display.getMetrics(outMetrics) val density = outMetrics.density var adWidthPixels = ad_view_container.width.toFloat() if (adWidthPixels == 0f) { adWidthPixels = outMetrics.widthPixels.toFloat() } val adWidth = (adWidthPixels / density).toInt() return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth) } }
Удаление обратного вызова приложения для отказа
Функция обратного вызова onAdLeftApplication для всех форматов рекламы была удалена в пользу ProcessLifecycleOwner . Использование API на уровне операционной системы позволяет получать уведомления всякий раз, когда пользователи покидают ваше приложение, независимо от того, произошло это из-за взаимодействия с рекламой или нет.
Следует отметить, что функция обратного вызова onAdLeftApplication изначально не предназначалась для обработки кликов по рекламе, и использование этой функции для отслеживания кликов не давало точных результатов. Например, клик по значку AdChoices, запустивший внешний браузер, вызывал функцию обратного вызова, но не засчитывался как клик.
Переименование классов
В таблице ниже перечислены конкретные названия классов, которые были изменены или удалены:
- Большинство классов, связанных с
UnifiedNativeAd, были переименованы вNativeAd. - Классы и представления
MobileAds.Settings,NativeExpressAdView,NativeAppInstallAd,NativeContentAdиInstreamAdбыли удалены. - Все классы с префиксом
Publisherбыли заменены на префиксAdManager. - Название пакета
InterstitialAdизменилось.
| Класс 19.5.0 | Класс 20.0.0 |
|---|---|
| com.google.android.gms.ads. | com.google.android.gms.ads. |
| reward.RewardedVideoAd | награда.RewardedAd |
| reward.RewardedVideoAdListener | rewarded.RewardedAdLoadCallback and FullScreenContentCallback |
| награда.НаградаItem | награда получена.Награда |
| rewarded.RewardedAdCallback | OnUserEarnedRewardListener |
| formats.UnifiedNativeAdView | nativead.NativeAdView |
| форматы.UnifiedNativeAd | nativead.NativeAd |
| formats.UnifiedNativeAdAssetNames | nativead.NativeAdAssetNames |
| formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener | nativead.NativeAd.OnNativeAdLoadedListener |
| форматы.AdChoicesView | nativead.AdChoicesView |
| formats.NativeAd.AdChoicesInfo | nativead.NativeAd.AdChoicesInfo |
| форматы.МедиаПросмотр | nativead.MediaView |
| форматы.NativeAdViewHolder | nativead.NativeAdViewHolder |
| formats.NativeAdOptions | nativead.NativeAdOptions |
| formats.NativeCustomTemplateAd | nativead.NativeCustomFormatAd |
| formats.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener | nativead.NativeCustomFormatAd .OnCustomFormatAdLoadedListener |
| MobileAds.Settings | Удаленный |
| doubleclick.PublisherAdRequest | admanager.AdManagerAdRequest |
| doubleclick.PublisherAdView | admanager.AdManagerAdView |
| formats.PublisherAdViewOptions | formats.AdManagerAdViewOptions |
| doubleclick.PublisherIntersticialAd | admanager.AdManagerInterstitialAd |
| Межстраничная реклама | межстициальная.межстициальнаяреклама |
| NativeExpressAdView | Удаленный |
| instream.InstreamAd | Удаленный |
| mediation.admob.AdMobExtras | Удаленный |
| Коррелятор | Удаленный |
| поиск.SearchAdRequest | Удаленный |
| Интерфейс AdRequest.TagForUnderAgeOfConsent | Удаленный |
| Interface AdRequest.MaxAdContentRating | Удаленный |
| formats.NativeAppInstallAd | native.NativeAd |
| formats.NativeAppInstallAdView | native.NativeAdView |
| mediation.NativeAppInstallAdMapper | медиация.UnifiedNativeAdMapper |
| форматы.НативныйКонтентAd | native.NativeAd |
| formats.NativeContentAdView | native.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() | ||
| getCurrentOrientationBannerAdSizeWithWidth() | getCurrentOrientationAnchored AdaptiveBannerAdSize() | ||
| Мобильная реклама | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete Listener) | Идентификатор приложения теперь задаётся в файле AndroidManifest.xml. |
| initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete Listener) | Класс Settings устарел. | |
| getRewardedVideo AdInstance() | Удаленный | Вместо этого используйте API RewardedAd. | |
| AdListener | onAdFailedToLoad(int) | onAd FailedToLoad(LoadAdError) | |
| onAdLeftApplication() | Удаленный | В полноэкранных рекламных форматах вместо AdListener используется FullscreenContentCallback, и в FullscreenContentCallback нет эквивалентного метода. Этот метод был удален из AdListener. | |
| Видеоконтроллер | getAspectRatio() | MediaContent.getAspectRatio() | |
| AdRequest | getGender() | Удаленный | |
| getBirthday() | Удаленный | ||
| getNetworkExtras() | Удаленный | ||
| setManualImpressions включен() | Удаленный | ||
| updateCorrelator() | Удаленный | См. Фильтрация рекламного контента . | |
| AdRequest.Builder | setBirthday() | Удаленный | |
| setGender() | Удаленный | ||
| setIsDesignedForFamilies() | Удаленный | См. руководство . | |
| addTestDevice() | RequestConfiguration.Builder.setTestDeviceIds() | См. раздел «Включить тестовые объявления» . | |
| tagForChildDirectedTreatment() | RequestConfiguration .Builder.setTagFor ChildDirectedTreatment() | См. Фильтрация рекламного контента . | |
| setTagFor UnderAgeOfConsent() | RequestConfiguration .Builder.setTagFor UnderAgeOfConsent() | ||
| setMaxAdContentRating() | RequestConfiguration.Builder.setMaxAdContentRating() | ||
| AdView | getMediationAdapter ClassName() | ResponseInfo.getMediationAdapter ClassName() | Объект ResponseInfo доступен с помощью метода getResponseInfo() AdView . |
| 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 FailedToLoad(int) | onAd FailedToLoad(LoadAdError) | |
| onRewardedAd FailedToLoad(LoadAdError) | onAd FailedToLoad(LoadAdError) | ||
| onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
| AppOpenAdLoadCallback | onAppOpenAd FailedToLoad(int) | onAd FailedToLoad(LoadAdError) | |
| onAppOpenAd FailedToLoad(LoadAdError) | onAd FailedToLoad(LoadAdError) | ||
| onAppOpenAd Loaded(AppOpenAd) | onAdLoaded(AppOpenAd) | ||
| Обратный вызов RewardedIntertitialAdLoad | onRewardedIntersticialAd FailedToLoad(int) | onAd FailedToLoad(LoadAdError) | |
| onRewardedIntersticialAd FailedToLoad(LoadAdError) | onAd FailedToLoad(LoadAdError) | ||
| onRewardedInterstitialAd Loaded(RewardedInterstitialAd) | onAd Loaded(RewardedIntertitialAd) | ||
| Межстраничная реклама | new InterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | Теперь в InterstitialAd используется тот же подход к статической загрузке, что и в других полноэкранных форматах. |
| setAdListener() | |||
| Запрос DynamicHeightSearchAd | getNetworkExtras() | Удаленный | Класс NetworkExtras устарел. |
| AdLoader | forContentAd() | Удаленный | |
| forAppInstallAd() | Удаленный | ||
| withCorrelator() | Удаленный | ||
| getMediationAdapter ClassName() | Удаленный |