Миграция SDK

На этой странице рассматриваются миграции для текущей и предыдущей версий.

Переход на SDK v21

Чтобы избежать потенциальных сбоев сборки с версией 21.0.0 SDK Google Mobile Ads (выпуск намечен на начало 2022 года), следуйте инструкциям и рекомендациям, представленным в этом руководстве.

Обновите minSdkVersion до версии 19 или выше.

Начиная с версии 21.0.0, для работы Google Mobile Ads SDK требуется, чтобы все приложения работали на Android API не ниже 19 уровня. Чтобы настроить уровень API, измените значение minSdkVersion в файле сборки вашего приложения на 19 или выше.

Обеспечьте строгую допустимость значений NULL

В рамках подготовки к обеспечению строгой допустимости значений NULL аннотации @NonNull добавляются во все API, которые ранее явно не определяли допустимость значений NULL.

Это изменение может нарушить работу приложений 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 Класс/ Интерфейс
Пользовательское событие Адаптер
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Адаптер , MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
Кустосоевентнативелистенер

Переход на SDK v20

В версии 20.0.0 будет много критических изменений. В версии 19.7.0 представлено много новых API, а многие классы объявлены устаревшими или переименованы при подготовке к версии 20.0.0. В этом руководстве освещаются основные изменения, внесенные в версию 19.7.0, а также то, что будет в версии 20.0.0 (начало 2021 г.).

Обновления API полноэкранного формата

Начиная с версии 20.0.0, межстраничные объявления, объявления с вознаграждением, межстраничные объявления с вознаграждением и форматы объявлений App Open стандартизированы для соответствия единому дизайну API.

Все API полноэкранного формата используют следующие принципы:

  • Метод статической нагрузки
  • Аналогичный механизм обратного вызова или обработчика загрузки
  • Использование класса FullScreenContentCallback для обратных вызовов презентации

Удаление устаревшего RewardedVideoAd API

Новый 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 никогда не предназначался для обработки кликов по объявлению, и использование этого обратного вызова для отчета о кликах не дает точной метрики. Например, щелчок по значку 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.
вознаграждение.RewardedVideoAd вознаграждение.RewardedAd
Награда.RewardedVideoAdListener вознаграждение.RewardedAdLoadCallback и FullScreenContentCallback
награда.RewardItem вознаграждение.RewardItem
вознаграждение.RewardedAdCallback OnUserEarnedRewardListener
форматы.UnifiedNativeAdView нативад.NativeAdView
форматы.UnifiedNativeAd нативад.NativeAd
форматы. UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
форматы.AdChoicesView nativead.AdChoicesView
formats.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
форматы.MediaView nativead.MediaView
форматы.NativeAdViewHolder нативад. Нативеадвиевхолдер
форматы.NativeAdOptions nativead.NativeAdOptions
форматы.NativeCustomTemplateAd nativead.NativeCustomFormatAd
formats.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd .OnCustomFormatAdLoadedListener
MobileAds.Настройки Удаленный
doubleclick.PublisherAdRequest менеджер рекламы.AdManagerAdRequest
doubleclick.PublisherAdView менеджер рекламы.AdManagerAdView
форматы.PublisherAdViewOptions форматы.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
Межстраничное объявление межстраничное.InterstitialAd
NativeExpressAdView Удаленный
instream.InstreamAd Удаленный
mediation.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 были обновлены, чтобы соответствовать всем полноэкранным форматам.
  • Функции коррелятора были удалены.
Сорт v19.5.0 API v20.0.0 API Примечания
Размер объявления getPortraitBanner AdSizeWithWidth() getPortraitAnchored AdaptiveBannerAdSize()
getLandscapeBanner AdSizeWithWidth() getLandscapeAnchored AdaptiveBannerAdSize()
getCurrentOrientation BannerAdSizeWithWidth() getCurrentOrientationAnchored AdaptiveBannerAdSize()
Мобильная реклама инициализировать (контекст, строка) MobileAds.initialize(Context, OnInitializationComplete Listener) Идентификатор приложения теперь установлен в файле AndroidManifest.xml.
инициализировать(Контекст, Строка, MobileAds.Settings) инициализировать (контекст, слушатель OnInitializationComplete) Класс Settings устарел.
getRewardedVideo AdInstance() Удаленный Вместо этого используйте RewardedAd API.
AdListener onAdFailedToLoad (целое число) onAd FailedToLoad (LoadAdError)
onAdLeftApplication() Удаленный Форматы полноэкранных объявлений используют FullscreenContentCallback вместо AdListener, и для FullscreenContentCallback нет эквивалентного метода. Метод был удален из AdListener.
ВидеоКонтроллер получить соотношение сторон () MediaContent.getAspectRatio()
AdRequest получитьпол() Удаленный
получитьдень рождения() Удаленный
получитьNetworkExtras() Удаленный
setManualImpressions включено () Удаленный
обновить коррелятор () Удаленный См. раздел Фильтрация содержания объявлений .
AdRequest.Builder установитьдень рождения() Удаленный
setGender() Удаленный
setIsDesignedForFamilies() Удаленный См. руководство .
добавитьтестовое устройство() Конфигурация Запроса .Builder .setTestDeviceIds() См. Включение тестовых объявлений .
tagForChildDirectedTreatment() RequestConfiguration .Builder.setTagFor ChildDirectedTreatment() См. раздел Фильтрация содержания объявлений .
setTagFor UnderAgeOfConsent() RequestConfiguration .Builder.setTagFor UnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration .Builder .setMaxAdContentRating()
Просмотр рекламы getMediationAdapter ClassName() ResponseInfo .getMediationAdapter ClassName() Объект ResponseInfo теперь доступен через метод AdView getResponseInfo().
NativeAdOptions установитьориентацию изображения() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
Объявление с вознаграждением loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) RewardedAd теперь использует тот же метод статической загрузки, что и другие полноэкранные форматы.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Удаленный Обратный вызов из метода статической загрузки предоставляет уже загруженное объявление.
show(Activity, RewardedAdCallback) показать (Активность, OnUserEarnedRewardListener) Этот метод показа соответствует более широкому полноэкранному формату.
RewardedAdLoadCallback onRewardedAd FailedToLoad (целое число) onAd FailedToLoad (LoadAdError)
OnRewardedAd FailedToLoad (LoadAdError) onAd FailedToLoad (LoadAdError)
onRewardedAdLoaded() onAdLoaded (объявление с вознаграждением)
AppOpenAdLoadCallback 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 Loaded (RewardedInterstitialAd)
InterstitialAd новый InterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd теперь использует тот же метод статической загрузки, что и другие полноэкранные форматы.
setAdListener()
Запрос объявления DynamicHeightSearch получитьNetworkExtras() Удаленный Класс NetworkExtras устарел.
AdLoader forContentAd() Удаленный
forAppInstallAd() Удаленный
с коррелятором() Удаленный
getMediationAdapter ClassName() Удаленный