Prepare for SDK v20

La versión 20.0.0 presenta muchos puntos de ruptura. En la versión 19.7.0 se incorporan muchas API nuevas, y muchas clases dejan de estar disponibles o cambiado de nombre de cara a la versión 20.0.0. En esta guía se destacan los principales cambios que se han realizado en la versión 19.7.0, así como lo que ofrece la versión 20.0.0 (que se lanzará a principios del 2021).

Novedades de las API con formato de pantalla completa

A partir de la versión 20.0.0, se estandarizan los formatos de anuncios intersticiales, bonificados, intersticiales bonificados y de carga de aplicación para que tengan un diseño de API unificado.

Todas las API de pantalla completa tienen estas características:

  • Un método de carga estática
  • Un mecanismo de controlador o retrollamada de carga similar
  • La clase FullScreenContentCallback para las retrollamadas de presentación

Eliminación de la antigua API RewardedVideoAd

La API RewardedAd más reciente se presentó por primera vez en marzo del 2019 y ha sido la API de anuncios bonificados preferida durante más de 18 meses. Cuenta con una serie de mejoras con respecto a la antigua API RewardedVideoAd, incluida la posibilidad de cargar varios anuncios bonificados a la vez.

La API RewardedVideoAd antigua se ha retirado en la versión 20.0.0 del SDK.

Sustitución de los banners inteligentes por banners adaptativos

Los anuncios de banner inteligentes dejan de estar disponibles y, en su lugar, se utilizarán los anuncios de banner adaptativos. Los adaptativos ofrecen mejores resultados y más flexibilidad a la hora de fijar la anchura de los anuncios. Si prefieres seguir usando banners de anchura completa, puedes usar igualmente el banner adaptativo 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)
    }
}

Retirada de la retrollamada de abandono de aplicación

La retrollamada onAdLeftApplication se ha retirado de todos los formatos de anuncio y, en su lugar, se utilizará ProcessLifecycleOwner. Con las API a nivel de sistema operativo, recibes notificaciones cada vez que un usuario abandona tu aplicación, independientemente de si ese abandono se debe a una interacción con un anuncio o no.

Ten en cuenta que la retrollamada onAdLeftApplication no se diseñó para controlar los clics en anuncios. Cuando se utiliza para informar sobre clics, no produce métricas precisas. Por ejemplo, después de hacer clic en el icono de Gestión de anuncios que abría un navegador externo, se invocaba a la retrollamada, pero no se contaba ningún clic.

Cambios en nombres de clases

En la tabla que se muestra más abajo se enumeran los nombres de clases específicas que se han modificado o retirado. En resumen:

  • Se ha cambiado el nombre de la mayoría de las clases relacionadas con UnifiedNativeAd a NativeAd.
  • Se han retirado las siguientes clases y vistas: MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd e InstreamAd.
  • En todas las clases con el prefijo Publisher se ha sustituido este por el prefijo AdManager.
  • Se ha cambiado el nombre del paquete InterstitialAd.
Clase de la versión 19.5.0 Clase de la versión 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.OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
MobileAds.Settings Retirada
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView Retirada
instream.InstreamAd Retirada
mediation.admob.AdMobExtras Retirada
Correlator Retirada
search.SearchAdRequest Retirada
Interface AdRequest.TagForUnderAgeOfConsent Retirada
Interface AdRequest.MaxAdContentRating Retirada
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 retirados o sustituidos

En la tabla que se muestra más abajo se enumeran los cambios concretos de la versión 20.0.0. En resumen:

  • Se han retirado los métodos de inicialización obsoletos de la clase MobileAds.
  • Se han retirado algunos métodos de la clase AdRequest.Builder() o se han trasladado a la clase RequestConfiguration.
  • Las API RewardedAd e InterstitialAd se han actualizado para poder trabajar con todos los formatos de pantalla completa.
  • Se han retirado las funciones de correlacionador.
Clase API de la versión 19.5.0 API de la versión 20.0.0 Notas
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds initialize(Context, String) MobileAds.initialize(Context, OnInitializationCompleteListener) El ID de la aplicación ahora se define en el archivo AndroidManifest.xml.
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationCompleteListener) La clase Settings deja de estar disponible.
getRewardedVideoAdInstance() Retirada En su lugar, utiliza la API RewardedAd.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() Retirada Los formatos de anuncio a pantalla completa utilizan FullscreenContentCallback en lugar de AdListener, y no hay ningún método equivalente en FullscreenContentCallback. El método se ha retirado de AdListener.
VideoController getAspectRatio() MediaContent.getAspectRatio()
PublisherAdRequest getGender() Retirada
getBirthday() Retirada
getNetworkExtras() Retirada
setManualImpressionsEnabled() Retirada
updateCorrelator() Retirada Consulta el apartado sobre cómo filtrar contenido de anuncios.
PublisherAdRequest.Builder setBirthday() Retirada
setGender() Retirada
setIsDesignedForFamilies() Retirada Consulta la guía.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Consulta el apartado sobre cómo habilitar anuncios de prueba.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() Consulta el apartado sobre cómo filtrar contenido de anuncios.
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() Ya hay un objeto ResponseInfo 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) Ahora RewardedAd utiliza el mismo método de carga estática que otros formatos de pantalla completa.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Retirada La retrollamada del método de carga estática proporciona un anuncio que ya está cargado.
show(Activity, RewardedAdCallback) show(Activity, OnUserEarnedRewardListener) Este método show se ajusta a un formato de pantalla completa más amplio.
RewardedAdLoadCallback onRewardedAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdLoaded(RewardedInterstitialAd) onAdLoaded(RewardedInterstitialAd)
PublisherInterstitialAd new PublisherInterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) Ahora InterstitialAd utiliza el mismo método de carga estática que otros formatos de pantalla completa.
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() Retirada La clase NetworkExtras deja de estar disponible.
AdLoader forContentAd() Retirada
forAppInstallAd() Retirada
withCorrelator() Retirada
getMediationAdapterClassName() Retirada