En esta página, se abordan las migraciones para las versiones actuales y anteriores.
Migra de la versión 23 a la 24
En las siguientes subsecciones, se describen los cambios que generan interrupciones y las diferencias de comportamiento entre las versiones principales 23 y 24 del SDK de anuncios de Google para dispositivos móviles.
El nivel de API mínimo de Android es 23.
A partir de la versión 24.0.0, el SDK de anuncios de Google Mobile requiere que todas las apps se ejecuten en un nivel de API de Android 23 como mínimo. Para ajustar el nivel de API, cambia el valor de minSdk
en el archivo build.gradle
a nivel de la app a 23 o un valor superior.
Cambios en la inicialización y la carga optimizadas
De forma predeterminada, las marcas OPTIMIZE_INITIALIZATION
y OPTIMIZE_AD_LOADING
se establecen en true
. Para obtener más información sobre estas marcas, consulta Cómo optimizar la inicialización y la carga.
Se quitaron las dependencias de firebase-ads y firebase-ads-lite
A partir de la versión 24.0.0, las versiones del SDK ya no distribuyen las dependencias firebase-ads
y firebase-ads-lite
. En su lugar, usa la dependencia play-services-ads
.
Se quitaron las APIs de orientación obsoletas para los anuncios de aplicación abierta
- Se quitaron los métodos
AppOpenAd.load()
que aceptan un parámetro de entrada de orientación. En su lugar, usa métodosAppOpenAd.load()
que no tomen una orientación. - Se quitó la enumeración
AppOpenAdOrientation
.
Devolución de llamada de recompensa simplificada para adaptadores de mediación
La versión 24.0.0 agrega la devolución de llamada onUserEarnedReward()
en MediationRewardedAdCallback
y deja de utilizar onUserEarnedReward(RewardItem)
.
Los adaptadores de mediación deben comenzar a llamar a onUserEarnedReward()
cuando el usuario gana una recompensa.
Cuando se reenvían devoluciones de llamada desde adaptadores de mediación, todas las versiones del SDK de anuncios de Google para dispositivos móviles devuelven la recompensa definida en la IU de AdMob en OnUserEarnedRewardListener
.
Se quitaron las clases
Se quitaron las siguientes clases sin reemplazo:
DynamicHeightSearchAdRequest
SearchAdRequest
SearchAdView
Se quitaron métodos
Se quitaron los siguientes métodos sin reemplazo:
Clase | Método |
---|---|
RewardedInterstitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) |
|
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Métodos obsoletos
Los siguientes métodos dejaron de estar disponibles y no se reemplazaron:
Clase | Método |
---|---|
Adaptador | loadInterscrollerAd() |
RtbAdapter | loadRtbInterscrollerAd() |
Migra de la versión 22 a la 23
En las siguientes subsecciones, se describen los cambios disruptivos y las diferencias de comportamiento entre las versiones principales 22 y 23 del SDK de anuncios de Google para dispositivos móviles.
El nivel mínimo de 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 se ejecuten en un nivel de API de Android mínimo de 21. Para ajustar el nivel de API, cambia el valor de minSdkVersion
en el archivo build.gradle
a nivel de la app a 21 o a un valor superior.
Se quitaron o reemplazaron métodos obsoletos
API de v22.0.0 | API de 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.withNativeAdOptions(com.google.android.gms.ads.formats .NativeAdOptions)
|
AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.nativead .NativeAdOptions)
|
void MobileAds.setSameAppKeyEnabled() | boolean MobileAds.putPublisherFirstPartyIdEnabled() |
Migra de la versión 21 a la 22
En las siguientes subsecciones, se describen los cambios intercalados y las diferencias de comportamiento entre las versiones 21 y 22 principales del SDK de anuncios de Google para dispositivos móviles.
Usa MobileAds.getVersion() para obtener la versión del SDK de anuncios de Google para dispositivos móviles
El método MobileAds.getVersionString()
se quitó en la versión 22.0.0 y se reemplazó por MobileAds.getVersion()
.
El nuevo método devuelve el número de versión externo 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 anuncios de Google para dispositivos móviles.
Métodos quitados o reemplazados
En la siguiente tabla, se enumeran los cambios específicos de 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 |
Migra de la versión 20 a la 21
En las siguientes subsecciones, se describen los cambios disruptivos y las diferencias de comportamiento entre las versiones principales 20 y 21 del SDK de anuncios de Google para dispositivos móviles:
Actualiza minSdkVersion a 19 o una versión 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 se ejecuten en un nivel de API de Android 19 como mínimo. 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.
Aplica la nulabilidad estricta
En 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 interrumpir las apps de Kotlin y las apps que usan frameworks de verificación de nulos de Java si hay incumplimientos de la seguridad nula y no se controlaron los valores de null
de forma segura (consulta la documentación de Kotlin sobre la seguridad nula).
Se quitó el método addNetworkExtras()
El método addNetworkExtras()
que pasa parámetros adicionales como una instancia de NetworkExtras
a un adaptador de red publicitaria 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
Los siguientes métodos de ubicación se quitarán en la versión 21.0.0:
- El método
setLocation(Location location)
en la claseAdRequest.Builder
que establece la ubicación del usuario para fines de segmentación de la mediación. - El método
getLocation()
en la claseAdRequest
que devuelve la información de segmentación por ubicación del usuario que se pasó anteriormente al métodosetLocation(Location location)
. - El método
getLocation()
en la claseMediationAdConfiguration
que devuelve la ubicación del usuario, si la defineAdRequest
.
Google no usa los datos de ubicación para segmentar anuncios. Si es necesario, debes usar APIs de terceros para proporcionar la información a las redes de publicidad de terceros.
Baja de las interfaces de eventos personalizados
Los eventos personalizados permiten que los publicadores que usan la Mediación de AdMob configuren una fuente de anuncios 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 enumeran la clase o interfaz correspondiente que debes usar para cada interfaz de eventos personalizados a partir de la versión 21.0.0:
Interfaces de la versión 20.0.0 | Clase o interfaz de la versión 21.0.0 |
---|---|
CustomEvent | Adaptador |
CustomEventBanner | |
CustomEventInterstitial | |
CustomEventNative | |
CustomEventBannerListener |
Adapter,
|
CustomEventInterstitialListener | |
CustomEventListener | |
CustomEventNativeListener |
Migra 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 marcó como obsoletas o cambió el nombre de muchas clases en preparación para la versión 20.0.0. En esta guía, se destacan los principales cambios de la versión 20.0.0.
Actualizaciones de la API de formato de pantalla completa
A partir de la versión 20.0.0, los formatos de anuncios intersticiales, recompensados, intersticiales recompensados y de apertura de aplicación se estandarizaron para seguir un diseño de API coherente.
Todas las APIs de formato de pantalla completa usan los siguientes principios:
- Un método de carga estático
- Un mecanismo de controlador o devolución de llamada de carga similar
- Dependencia de la clase
FullScreenContentCallback
para las devoluciones de llamada de presentación
Eliminación de la API heredada de RewardedVideoAd
La API de RewardedAd
más reciente se introdujo en marzo de 2019 y ha sido la API de recompensas preferida durante más de 18 meses. Se le realizaron 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 heredada RewardedVideoAd
se quitó en la versión 20.0.0 del SDK.
Baja de los banners inteligentes en favor de los banners adaptables
Los anuncios de banner inteligente dejaron de estar disponibles y se reemplazaron por los anuncios de banner adaptable. Los banners adaptables proporcionan un rendimiento superior y más flexibilidad para 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) } }
Se quitó la devolución de llamada de la aplicación de salida
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 a una interacción con un anuncio o no.
Ten en cuenta que la devolución de llamada onAdLeftApplication
nunca se diseñó para ser un controlador de clics en anuncios, y depender de esta devolución de llamada para registrar clics no produjo una métrica precisa. Por ejemplo, un clic en el ícono de AdChoices que inició un navegador externo invocó la devolución de llamada, pero no se contó como un clic.
Cambios de nombre de la clase
En la siguiente tabla, se enumeran los nombres de clases específicos que cambiaron o se quitaron:
- Se cambió el nombre de la mayoría de las clases relacionadas con
UnifiedNativeAd
aNativeAd
. - Se quitaron las clases y las vistas
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
yInstreamAd
. - Todas las clases con el prefijo
Publisher
se reemplazaron por un prefijoAdManager
. - El nombre del paquete
InterstitialAd
cambió.
Clase 19.5.0 | Clase 20.0.0 |
---|---|
com.google.android.gms.ads. | com.google.android.gms.ads. |
reward.RewardedVideoAd | rewarded.RewardedAd |
reward.RewardedVideoAdListener | rewarded.RewardedAdLoadCallback 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 |
nativead.NativeCustomFormatAd |
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 |
Correlator | Quitada |
search.SearchAdRequest | Quitada |
Interfaz AdRequest.TagForUnderAgeOfConsent | 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 enumeran los cambios específicos de la versión 20.0.0:
- Se quitaron los métodos de inicialización desactualizados de la clase MobileAds.
- Se quitaron algunos métodos de la clase
AdRequest.Builder()
o se movieron a la claseRequestConfiguration
. - Se actualizaron las APIs de RewardedAd y InterstitialAd para que se alineen con todos los formatos de pantalla completa.
- Se quitaron las funciones de correlación.
Clase | API de v19.5.0 | API de v20.0.0 | Notas |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete |
El ID de la app ahora está configurado en el archivo AndroidManifest.xml. |
initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
Se dejó de usar la clase Settings. | |
getRewardedVideo |
Quitada | En su lugar, usa la API de RewardedAd. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
onAdLeftApplication() | Quitada | Los formatos de anuncios de pantalla completa usan FullscreenContentCallback en lugar de AdListener, y no hay ningún método equivalente en FullscreenContentCallback. Se quitó el método de AdListener. | |
VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
AdRequest | getGender() | Quitada | |
getBirthday() | Quitada | ||
getNetworkExtras() | Quitada | ||
setManualImpressions |
Quitada | ||
updateCorrelator() | Quitada | Consulta Filtrado de contenido de anuncios. | |
AdRequest.Builder | setBirthday() | Quitada | |
setGender() | Quitada | ||
setIsDesignedForFamilies() | Quitada | Consulta la guía. | |
addTestDevice() | RequestConfiguration |
Consulta Cómo habilitar los anuncios de prueba. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Consulta Filtrado de contenido de anuncios. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
Un objeto ResponseInfo está disponible con el método AdView , getResponseInfo() .
|
NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | Ahora, RewardedAd usa el mismo enfoque de carga estática que otros formatos de pantalla completa. |
loadAd(PublisherAdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Quitada | La devolución de llamada del método de carga estático proporciona un anuncio que ya se cargó. | |
show(Activity, RewardedAdCallback) | show(Activity, OnUserEarnedRewardListener) | Este método de visualización se ajusta al enfoque más amplio del formato de pantalla completa. | |
RewardedAdLoadCallback | onRewardedAd |
onAd |
|
onRewardedAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
RewardedInterstitialAdLoad |
onRewardedInterstitialAd |
onAd |
|
onRewardedInterstitialAd |
onAd |
||
onRewardedInterstitialAd |
onAd |
||
InterstitialAd | new InterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | InterstitialAd ahora usa el mismo enfoque de carga estática que otros formatos de pantalla completa. |
setAdListener() | |||
DynamicHeightSearchAd |
getNetworkExtras() | Quitada | La clase NetworkExtras dejó de estar disponible. |
AdLoader | forContentAd() | Quitada | |
forAppInstallAd() | Quitada | ||
withCorrelator() | Quitada | ||
getMediationAdapter |
Quitada |