На этой странице описаны миграции для текущей и предыдущих версий.
Миграция с версии 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Поддерживаемые источники объявлений .
Все пользовательские интерфейсы событий устарели в пользу класса 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() | |
AdRequest | getGender() | Удаленный | |
получитьДень Рождения() | Удаленный | ||
getNetworkExtras() | Удаленный | ||
setManualImpressions включен() | Удаленный | ||
обновлениеКоррелятор() | Удаленный | См. раздел «Фильтрация рекламного контента» . | |
AdRequest.Строитель | УстановитьДень Рождения() | Удаленный | |
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 | новый InterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | InterstitialAd теперь использует тот же подход статической загрузки, что и другие полноэкранные форматы. |
setAdListener() | |||
DynamicHeightSearchЗапрос объявления | getNetworkExtras() | Удаленный | Класс NetworkExtras устарел. |
AdLoader | дляContentAd() | Удаленный | |
дляAppInstallAd() | Удаленный | ||
сКоррелятор() | Удаленный | ||
getMediationAdapter ClassName() | Удаленный |