На этой странице описаны миграции для текущей и предыдущих версий.
Миграция с версии 22 на версию 23
Минимальный уровень 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
Используйте 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
Обновите 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 ClassName() | Объект 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() | Удаленный |