En esta página, se abordan las migraciones de las versiones actuales y anteriores.
Cómo migrar 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 un nivel de API de Android mínimo de 21 para ejecutarse. Para ajustar el nivel de API, cambia el valor de minSdkVersion
en el archivo build.gradle
a nivel de la app a 21 o una versión posterior.
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
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 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 Usa 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 |
Cómo migrar de la versión 20 a la 21
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 tengan un nivel de API de Android 19 como mínimo 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 uno superior.
Aplica la nulabilidad estricta
Para preparar la aplicación forzosa de la nulabilidad estricta, se agregaron anotaciones @NonNull
en todas las APIs que antes no definían explícitamente la nulabilidad.
Este cambio puede dañar las apps de Kotlin y las que usan frameworks de verificación de valores nulos de Java si hay violaciones de seguridad nula y no se controlaron los valores null
de forma segura (consulta la documentación de Kotlin sobre 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 de anuncios 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 la segmentación de mediación. - El método
getLocation()
en la claseAdRequest
que muestra la información de segmentación de ubicación del usuario que se pasó anteriormente al métodosetLocation(Location location)
. - El método
getLocation()
en la claseMediationAdConfiguration
que muestra 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 a los publicadores que usan la mediación deAdMob Mediation
Todas las interfaces de evento personalizado dejaron de estar disponibles y se las reemplazó 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 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 |
Cómo 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 dejó de estar disponible 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 más importantes 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 la app 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ático
- Un mecanismo de devolución de llamada o controlador 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 más reciente de RewardedAd
se presentó por primera vez en marzo de 2019 y ha sido la API de anuncios recompensados 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.
Se quitó la API heredada de RewardedVideoAd
en la versión 20.0.0 del SDK.
Baja de los banners inteligentes a favor de los banners adaptables
Los anuncios de banner inteligente dejaron de estar disponibles en favor de los anuncios de banner adaptable. Los banners adaptables proporcionan un rendimiento superior y más flexibilidad para configurar el ancho del anuncio. Si prefieres seguir usando banners de pantalla completa, 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) } }
Eliminación de la devolución de llamada de la app
Se quitó la devolución de llamada onAdLeftApplication
para todos los formatos de anuncios en favor de ProcessLifecycleOwner
.
Si usas una API a nivel del SO, recibirás una notificación cada vez que los usuarios salgan de tu app, independientemente de si se debe a una interacción con un anuncio.
Ten en cuenta que la devolución de llamada onAdLeftApplication
nunca estuvo destinada a ser un controlador de clics de anuncios, y confiar en esta devolución de llamada para informar 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 registró como un clic.
Cambios de nombre de las clases
En la siguiente tabla, se enumeran los nombres de clases específicos que se cambiaron o quitaron. Resumen:
- Se cambió el nombre de la mayoría de las clases relacionadas con
UnifiedNativeAd
aNativeAd
. - Se quitaron las clases y vistas
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
yInstreamAd
. - Todas las clases con el prefijo
Publisher
se reemplazaron por un prefijoAdManager
. - Cambió el nombre del paquete
InterstitialAd
.
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 |
Métodos quitados o reemplazados
En la siguiente tabla, se enumeran los cambios específicos de la versión 20.0.0. Resumen:
- Se quitaron los métodos de inicialización desactualizados 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 RewardedAd y InterstitialAd para alinearse con todos los formatos de pantalla completa.
- Se quitaron las funciones de Correlator.
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 app ahora se establece en AndroidManifest.xml. |
initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
La clase Settings dejó de estar disponible. | |
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 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 de anuncios. | |
AdRequest.Builder | setBirthday() | Quitada | |
setGender() | Quitada | ||
setIsDesignedForFamilies() | Quitada | Consulta la guía. | |
addTestDevice() | RequestConfiguration |
Consulta Habilita los anuncios de prueba. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Consulta Filtrado de contenido de anuncios. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
Ahora, un objeto ResponseInfo está disponible a través del método getResponseInfo() de AdView. |
NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | RewardedAd ahora 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ática proporciona un anuncio que ya se cargó. | |
show(Activity, RewardedAdCallback) | show(Activity, OnUserEarnedRewardListener) | Este método de visualización se adhiere 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) | ||
Devolución de llamada de 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 |