En esta página, se describen las migraciones de las versiones actuales y anteriores.
Migra de la versión 22 a la 23
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 tengan el nivel de API 21 de Android como mínimo para ejecutarse. Para ajustar el nivel de API, cambia el valor de minSdkVersion
en tu archivo build.gradle
del nivel de la app a 21 o 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.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
Usa 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()
y se reemplazó por MobileAds.getVersion()
.
El método nuevo muestra 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 que se quitaron o reemplazaron
En la siguiente tabla, se indican 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
Actualiza minSdkVersion a 19 o a 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 tengan un nivel de API 19 como mínimo de Android 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 a un valor superior.
Aplicar la nulabilidad estricta
Como preparación para la aplicación de la nulabilidad estricta, las anotaciones @NonNull
se agregan 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 de valores nulos de Java si hay incumplimientos de seguridad nulas y antes no manejaban los valores null
de forma segura (consulta la documentación de Kotlin sobre seguridad nula).
Eliminación del método addNetworkExtras()
El método addNetworkExtras()
que pasa parámetros adicionales como una instancia de 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 claseAdRequest.Builder
, que establece la ubicación del usuario para fines de segmentación de mediación - El método
getLocation()
de la claseAdRequest
que muestra la información de segmentación geográfica del usuario que se pasó anteriormente al métodosetLocation(Location location)
- Es el método
getLocation()
de la claseMediationAdConfiguration
que muestra la ubicación del usuario, si lo defineAdRequest
.
Google no utiliza los datos de ubicación para segmentar anuncios. Debes usar APIs de terceros para proporcionar la 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 que usan la mediación AdMob agreguen la mediación en cascada para una red de publicidad que no sea una de las redes de publicidad 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 muestra 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 o interfaz v21.0.0 |
---|---|
CustomEvent | Adaptador |
CustomEventBanner | |
CustomEventInterstitial | |
CustomEventNative | |
CustomEventBannerListener |
Adapter,
|
CustomEventInterstitialListener | |
CustomEventListener | |
CustomEventNativeListener |
Migra de la versión 19 a la 20
Existen muchos cambios rotundos en la versión 20.0.0. La versión 19.7.0 introdujo muchas APIs nuevas, y dio de baja o cambió el nombre de muchas clases en preparación para la versión 20.0.0. En esta guía, se destacan los cambios principales en 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 los anuncios intersticiales, recompensados, intersticiales recompensados y de aplicación abierta están estandarizados 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
- Se utiliza la clase
FullScreenContentCallback
para las 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. Se implementaron 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 quita en la versión 20.0.0 del SDK.
Baja de los banners inteligentes y compatibilidad con los banners adaptables
Los banners inteligentes dejaron de estar disponibles y se reemplazaron por los anuncios de banners adaptables. Los banners adaptables proporcionan un rendimiento superior y más flexibilidad a la hora de configurar el ancho del anuncio. Si prefieres seguir usando banners de ancho completo, puedes hacerlo con un 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
.
El uso de una API a nivel del SO te notifica cada vez que los usuarios abandonan tu app, sin importar si se debe a una interacción con el anuncio o no.
Ten en cuenta que la devolución de llamada onAdLeftApplication
nunca pretendía ser un controlador de clics en el anuncio y que, si se dependía de esta devolución de llamada para informar clics, no se 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 registró como un clic.
Cambio de nombre de la clase
En la siguiente tabla, se enumeran los nombres de clases específicos que se modificaron o quitaron. En resumen:
- El nombre de la mayoría de las clases relacionadas con
UnifiedNativeAd
cambió porNativeAd
. - Se quitaron las clases y vistas
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
yInstreamAd
. - Se reemplazaron todas las clases con el prefijo
Publisher
por un prefijoAdManager
. - El nombre del paquete
InterstitialAd
cambió.
19.5.0 Clase | Clase 20.0.0 |
---|---|
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 |
format.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 |
Correlacionador | 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 indican los cambios específicos de la versión 20.0.0. En resumen, haz lo siguiente:
- Los métodos de inicialización desactualizados se quitaron de la clase MobileAds.
- Algunos métodos de la clase
AdRequest.Builder()
se quitaron o se movieron a la claseRequestConfiguration
. - Se actualizaron las APIs de RecompensaAd y Intersticial para que se alineen con todos los formatos de pantalla completa.
- Se quitaron los atributos de correlator.
Clase | API de v19.5.0 | API v20.0.0 | Notas |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | inicializa(Context, String) | MobileAds.Initialize(Context, OnInitializationComplete |
El ID de la app ahora está configurado en el archivo AndroidManifest.xml. |
inicializa(Context, String, MobileAds.Settings) | inicializa(Context, OnInitializationComplete |
La clase Settings dejó de estar disponible. | |
getRewardVideo |
Quitada | En su lugar, usa la API de RewardAd. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
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 | ||
setManualImpressions |
Quitada | ||
updateCorrelator() | Quitada | Consulta Filtrado de contenido del anuncio. | |
AdRequest.Builder | setBirthday() | Quitada | |
setGender() | Quitada | ||
setIsDesignedForFamilies() | Quitada | Consulta la guía. | |
addTestDevice() | RequestConfiguration |
Consulta Cómo habilitar anuncios de prueba. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Consulta Filtrado de contenido del anuncio. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
Ahora hay un objeto ResponseInfo disponible a través del método AdView getResponseInfo(). |
NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | RewardAd ahora usa el mismo enfoque de carga estática que otros formatos de pantalla completa. |
loadAd(PublisherAdRequest, RewardAdLoadCallback) | RewardAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback) | ||
isLoaded() | Quitada | La devolución de llamada del método de carga estática proporciona un anuncio que ya está cargado. | |
show(Activity, RewardAdCallback) | show(Activity, OnUserGainedRewardListener) | Este método de programa se adhiere al enfoque más amplio de formato de pantalla completa. | |
RewardedAdLoadCallback | onRewardAd |
onAd |
|
onRewardAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
Recompensa intersticialAdLoad |
onRewardIntersticial |
onAd |
|
onRewardIntersticial |
onAd |
||
onAnuncioIntersticial recompensado |
onAd |
||
InterstitialAd | nuevo InterstitialAd() | IntersticAd.load(Contexto, Cadena, AdRequest, IntersticialAdLoadCallback) | IntersticAd 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 |