Миграция SDK,Миграция SDK

Выберите платформу: Android iOS Unity

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

Переход с версии 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() Удаленный