Migración de SDK

En esta página, se describen las migraciones de versiones actuales y anteriores.

Migrar de la versión 22 a la 23

El nivel mínimo de la API de Android es 21.

A partir de la versión 23.0.0, el SDK de anuncios de Google para dispositivos móviles requiere que todas las apps estén en un nivel mínimo de API de Android 21 para ejecutarse. Para ajustar el nivel de API, cambia el valor de minSdkVersion en el archivo build.gradle del nivel de la app a 21 o a un valor superior.

Se quitaron o reemplazaron métodos obsoletos

API v22.0.0 API v23.0.0
AdRequest.Builder.addTestDevice() RequestConfiguration.Builder.setTestDeviceIds()
AdRequest.Builder.tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment()
AdRequest.Builder.setIsDesignedForFamilies() RequestConfiguration.Builder.setMaxAdContentRating()
AdFormat.UNKNOWN Sin reemplazo
AdLoader.Builder.forUnifiedNativeAd() AdLoader.Builder.forNativeAd()
AdLoader.Builder.forCustomTemplateAd() AdLoader.Builder.forCustomFormatAd()
AdLoader.Builder.withLiveDataOptions(com.google.android.gms.ads.formats.LiveDataOptions) AdLoader.Builder.withLiveDataOptions(com.google.android.gms.ads.nativead.LiveDataOptions)
void MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

Migrar de la versión 21 a la 22

Usar MobileAds.getVersion() para obtener la versión del SDK de anuncios de Google para dispositivos móviles

En la versión 22.0.0, se quitó el método MobileAds.getVersionString() para dar lugar a MobileAds.getVersion().

El método nuevo muestra el número de versión externa esperado, por ejemplo, 22.0.0. Para obtener más información sobre este cambio, consulta Cómo usar el nuevo método getVersion() del SDK de Google Mobile Ads.

Métodos que se quitaron o reemplazaron

En la siguiente tabla, se indican los cambios específicos implementados en la versión 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 Adaptador
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

Migrar de la versión 20 a la 21

Actualiza minSdkVersion a la versión 19 o una posterior.

A partir de la versión 21.0.0, el SDK de anuncios de Google para dispositivos móviles requiere que todas las apps tengan un nivel mínimo de API de Android 19 para ejecutarse. Para ajustar el nivel de API, cambia el valor de minSdkVersion en el archivo de compilación de tu app a 19 o un valor superior.

Aplicar nulabilidad estricta

Como preparación para aplicar la nulabilidad estricta, se agregan anotaciones @NonNull en todas las APIs que antes no definían la nulabilidad de forma explícita.

Este cambio puede dañar las apps de Kotlin y las que usan frameworks de verificación nula de Java si hay incumplimientos de seguridad nulos y antes no manejaban los valores null de manera segura (consulta la documentación de Kotlin sobre seguridad contra nulos).

Eliminación del método addNetworkExtras()

El método addNetworkExtras() que pasa parámetros adicionales como una instancia NetworkExtras a un adaptador de red de publicidad específico dejó de estar disponible en la versión 20.3.0 del SDK y se quitará en la versión 21.0.0. En su lugar, usa el método addNetworkExtrasBundle() de la misma clase AdRequest.Builder.

Eliminación de métodos de ubicación

En la versión 21.0.0, se quitarán los siguientes métodos de ubicación:

  • El método setLocation(Location location) de la clase AdRequest.Builder, que establece la ubicación del usuario con fines de segmentación de mediación
  • El método getLocation() de la clase AdRequest que muestra la información de segmentación geográfica del usuario que se pasó anteriormente al método setLocation(Location location)
  • El método getLocation() en la clase MediationAdConfiguration, que muestra la ubicación del usuario, si lo define AdRequest

Google no usa los datos de ubicación para segmentar anuncios. Debes usar APIs de terceros para proporcionar información a redes de publicidad de terceros si es necesario.

Baja de las interfaces de eventos personalizados

Los eventos personalizados permiten que los publicadores usen la mediación de AdMob para configurar una fuente del anuncio en cascada que no sea una de las fuentes de anuncios admitidas de AdMob.

Todas las interfaces de eventos personalizados dejaron de estar disponibles y se reemplazaron por la clase Adapter y la interfaz MediationAdLoadCallback.

En la siguiente tabla, se indica la clase o interfaz correspondiente que se debe usar para cada interfaz de evento personalizado a partir de la versión 21.0.0:

Interfaces v20.0.0 Clase/ interfaz v21.0.0
CustomEvent Adaptador
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adapter, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Migrar de la versión 19 a la 20

Hay muchos cambios rotundos en la versión 20.0.0. La versión 19.7.0 introdujo muchas APIs nuevas y muchas clases dejaron de estar disponibles o se les cambió el nombre a fin de preparar la versión 20.0.0. En esta guía, se destacan los cambios principales de la versión 20.0.0.

Actualizaciones de la API con formato de pantalla completa

A partir de la versión 20.0.0, los formatos de anuncios intersticiales, recompensados, intersticiales recompensados y de aplicación abierta se estandarizan para seguir un diseño de API coherente.

Todas las APIs de formato de pantalla completa utilizan los siguientes principios:

  • Un método de carga estática
  • Una devolución de llamada de carga o un mecanismo de controlador similar
  • Dependencia de la clase FullScreenContentCallback para devoluciones de llamada de presentación

Eliminación de la API de RewardVideoAd heredada

La API de RewardedAd más reciente se introdujo por primera vez en marzo de 2019 y ha sido la API recompensada preferida durante más de 18 meses. Tiene más mejoras en comparación con la API de RewardedVideoAd heredada, incluida la capacidad de cargar más de un anuncio recompensado a la vez.

La API de RewardedVideoAd heredada se quitó en la versión 20.0.0 del SDK.

Baja del banner inteligente y se reemplazó por los banners adaptables

Los anuncios de banner inteligente dejaron de estar disponibles y se los reemplazó por los de banners adaptables. Los banners adaptables proporcionan un rendimiento superior y más flexibilidad a la hora de establecer el ancho del anuncio. Si prefieres seguir usando banners de ancho completo, puedes hacerlo con el banner adaptable, como se muestra en el siguiente fragmento de código:

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);
  }
}

Kotlin

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)
    }
}

Salir de la eliminación de la devolución de llamada de la aplicación

Se quitó la devolución de llamada onAdLeftApplication para todos los formatos de anuncios y se reemplazó por ProcessLifecycleOwner. Usar una API a nivel del SO te notifica cada vez que los usuarios abandonan tu app, independientemente de si se debe o no a una interacción con el anuncio.

Ten en cuenta que la devolución de llamada onAdLeftApplication nunca estuvo diseñada para ser un controlador de clics de anuncios, y depender de esta devolución de llamada para informar los clics no produjo una métrica precisa. Por ejemplo, un clic en el ícono de AdChoices que iniciaba un navegador externo invocaba la devolución de llamada, pero no se registraba como un clic.

Cambio de nombre de la clase

En la siguiente tabla, se indican los nombres de clases específicos que se modificaron o se quitaron. Resumen:

  • Se cambió el nombre de la mayoría de las clases relacionadas con UnifiedNativeAd a NativeAd.
  • Se quitaron las clases y vistas MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd y InstreamAd.
  • Todas las clases con el prefijo Publisher se reemplazaron por un prefijo AdManager.
  • Cambió el nombre del paquete InterstitialAd.
19.5.0 Clase 20.0.0 Clase
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener recompensado.RecompensaAdLoadCallback y FullScreenContentCallback
reward.RewardItem rewarded.RewardItem
rewarded.RewardedAdCallback OnUserEarnedRewardListener
formats.UnifiedNativeAdView nativead.NativeAdView
formats.UnifiedNativeAd nativead.NativeAd
formats.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
formats.AdChoicesView nativead.AdChoicesView
formats.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
formats.MediaView nativead.MediaView
formats.NativeAdViewHolder nativead.NativeAdViewHolder
formats.NativeAdOptions nativead.NativeAdOptions
formats.NativeCustomTemplateAd nativead.NativeCustomFormatAd
formats.NativeCustomTemplateAd.OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
MobileAds.Settings Quitada
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView Quitada
instream.InstreamAd Quitada
mediation.admob.AdMobExtras Quitada
Correlador Quitada
search.SearchAdRequest Quitada
Interfaz de AdRequest.TagFor UnderAgeOfConsent Quitada
Interfaz AdRequest.MaxAdContentRating Quitada
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

Se quitaron o reemplazaron métodos

En la siguiente tabla, se indican los cambios específicos implementados en la versión 20.0.0. Resumen:

  • Se quitaron de la clase MobileAds los métodos de inicialización desactualizados.
  • Algunos métodos de la clase AdRequest.Builder() se quitaron o se movieron a la clase RequestConfiguration.
  • Se actualizaron las APIs de RewardAd y InterestAd para que se alineen con todos los formatos de pantalla completa.
  • Se quitaron los atributos de Correlator.
Clase API v19.5.0 API v20.0.0 Notas
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds inicializar(Contexto, Cadena) MobileAds.Initialize(Context, OnInitializationCompleteObjeto de escucha) El ID de la app ahora se configura en el archivo AndroidManifest.xml.
inicializar(Contexto, String, MobileAds.Settings) inicializa(Contexto, OnInitializationCompleteObjeto de escucha) La clase Settings dejó de estar disponible.
getRecompensaVideoAdInstance() Quitada En su lugar, usa la API de RewardAd.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() Quitada Los formatos de anuncios de pantalla completa usan FullscreenContentCallback en lugar de AdListener, y no hay un método equivalente en FullscreenContentCallback. Se quitó el método de AdListener.
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() Quitada
getBirthday() Quitada
getNetworkExtras() Quitada
setManualImpressionsHabilitada() Quitada
updateCorrelator() Quitada Consulta Filtrado del contenido del anuncio.
AdRequest.Builder setBirthday() Quitada
setGender() Quitada
setIsDesignedForFamilies() Quitada Consulta la guía.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Consulta Cómo habilitar anuncios de prueba.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment(). Consulta Filtrado del contenido del anuncio.
setTagForunderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() Un objeto ResponseInfo ahora está disponible a través del método getResponseInfo() de AdView.
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RecompensaAdLoadCallback) RecompensaAd.load(Contexto, String, AdRequest, RecompensaAdLoadCallback) RewardAd ahora usa el mismo enfoque de carga estática que otros formatos de pantalla completa.
loadAd(PublisherAdRequest, RecompensaAdLoadCallback) RewardAd.load(Context, String, AdManagerAdRequest, RecompensaAdLoadCallback)
isLoaded() Quitada La devolución de llamada del método de carga estática proporciona un anuncio que ya está cargado.
show(Actividad, RewardAdCallback) show(Activity, OnUserRevenueedRewardListener) Este método de presentación cumple con el enfoque de formato de pantalla completa más amplio.
RewardedAdLoadCallback onRewardAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdCargado(AppOpenAd) onAdLoaded(AppOpenAd)
RecompensaIntersticialAdLoadDevolución de llamada onRecompensaIntersticialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRecompensaIntersticialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRecompensaIntersticialCargado(RecompensaIntersticialAd) onAdLoaded(RecompensaIntersticialAd)
InterstitialAd nuevo InterstitialAd() IntersticialAd.load(Context, String, AdRequest, IntersticialLoadCallback) Intersticial ahora usa el mismo enfoque de carga estática que otros formatos de pantalla completa.
setAdListener()
DynamicHeightSearchAdSolicitud getNetworkExtras() Quitada La clase NetworkExtras dejó de estar disponible.
AdLoader forContentAd() Quitada
forAppInstallAd() Quitada
withCorrelator() Quitada
getMediationAdapterClassName() Quitada