Миграция SDK

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

Миграция с версии 22 на версию 23

Минимальный уровень Android API — 21.

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

Методы AdManagerAdRequest.Builder , унаследованные от суперкласса, могут быть объединены в цепочку.

В версии 23.0.0 методы AdManagerAdRequest.Builder , унаследованные от его родительского элемента, можно объединить в цепочку для создания AdManagerAdRequest с помощью одного вызова:

Джава

AdManagerAdRequest request = new AdManagerAdRequest.Builder()
    .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method.
    .setContentUrl("https://www.example.com") // Method inherited from parent.
    .build(); // Builds an AdManagerAdRequest.

Котлин

var request = AdManagerAdRequest.Builder()
  .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method.
  .setContentUrl("https://www.example.com") // Method inherited from parent.
  .build() // Builds an AdManagerAdRequest.

Устаревшие методы удалены/заменены

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 .

Удаление устаревшего NativeCustomFormatAd.getVideoMediaView().

В версии 21 Google Mobile Ads SDK предоставил вам метод NativeCustomFormatAd.getVideoMediaView() для получения медиа-ресурса для собственного пользовательского формата рекламы.

Начиная с версии 22 , вы создаете свой собственный MediaView , настраиваете его медиаконтент и используете MediaContent.getVideoController() для получения элементов управления видео.

v22

// Called when a custom native ad loads.
@Override
public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) {
    // Assumes you have a FrameLayout in your view hierarchy with the id media_placeholder.
    FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder);

    MediaContent mediaContent = ad.getMediaContent();
    if (mediaContent != null && mediaContent.hasVideoContent()) {
        // Create a MediaView and set its media content.
        MediaView mediaView = new MediaView(mediaPlaceholder.getContext());
        mediaView.setMediaContent(mediaContent);
        mediaPlaceholder.addView(mediaView);
    }
}

v21

// Called when a custom native ad loads.
@Override
public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) {
    // Assumes you have a FrameLayout in your view hierarchy with the id media_placeholder.
    FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder);

    VideoController videoController = ad.getVideoController();
    if (videoController.hasVideoContent()) {
        // Add the media view provided by the native ad.
        mediaPlaceholder.addView(ad.getVideoMediaView());
    }
}

Дополнительную информацию см. в руководстве по персонализированным нативным объявлениям .

Удалены или заменены методы

В таблице ниже перечислены конкретные изменения в версии 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 для предоставления информации сторонним рекламным сетям.

Устаревание пользовательских интерфейсов событий

Пользовательские события позволяют издателям, использующим посредничество Ad Managerдобавлять каскадное посредничество для рекламной сети, которая не входит в число поддерживаемых Ad Managerрекламных сетей .

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