En esta página, se abordan las migraciones de las versiones actuales y anteriores.
Migra de la versión 24 a la 25
En los siguientes apartados, se describen los cambios rotundos y las diferencias de comportamiento entre las versiones principales 24 y 25 de Google Mobile Ads SDK (Legacy).
El nivel de API de Android mínimo es 24.
A partir de la versión 25.5.0, Google Mobile Ads SDK (Legacy) requiere que todas las apps se ejecuten
en un nivel de API de Android 24 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 24 o un valor superior.
Se quitaron las devoluciones de llamada de anuncios obsoletas.
Se quitaron las siguientes devoluciones de llamada de anuncios obsoletas de las clases que se indican a continuación:
| Clase | Se quitaron las devoluciones de llamada | Reemplazo |
|---|---|---|
| SignalCallbacks |
onFailure(String)onAdFailedToShow(String)
|
onFailure(AdError)onAdFailedToShow(AdError)
|
| MediationAdLoadCallback | ||
| MediationInterstitialAdCallback | ||
| MediationRewardedAdCallback |
Cambios en las APIs de tamaño de los banners adaptables fijos
La versión 25.0.0 deja de admitir las APIs de tamaño de banners adaptables fijos existentes y, además, presenta APIs de tamaño para los anuncios de banner adaptable fijo grande. Google Mobile Ads SDK (Legacy) puede publicar demanda de video en anuncios de banner con las nuevas APIs de tamaño de banner adaptable fijo grande.
En la siguiente tabla, se detallan las APIs de dimensionamiento que dejaron de estar disponibles y sus reemplazos:
| v24 (obsoleta) | v25 (reemplazo) |
|---|---|
getCurrentOrientationAnchoredAdaptiveBannerAdSize(Context, int) |
getLargeAnchoredAdaptiveBannerAdSize(Context, int) |
getLandscapeAnchoredAdaptiveBannerAdSize(Context, int) |
getLargeLandscapeAnchoredAdaptiveBannerAdSize(Context, int) |
getPortraitAnchoredAdaptiveBannerAdSize(Context context, int width) |
getLargePortraitAnchoredAdaptiveBannerAdSize(Context context, int width) |
Se quitó la clase mediation.VersionInfo.
Se quitó la clase VersionInfo del paquete com.google.android.gms.ads.mediation. En su lugar, usa el paquete com.google.android.gms.ads.VersionInfo.
Se quitó el método getConfiguration() de la clase RtbSignalData.
Se quitó la API del método getConfiguration() obsoleto en RtbSignalData.
En su lugar, usa el método
getConfigurations(),
que devuelve una lista de List<MediationConfiguration>.
Migra de la versión 23 a la 24
En los siguientes apartados, se describen los cambios rotundos y las diferencias de comportamiento entre las versiones principales 23 y 24 de Google Mobile Ads SDK (Legacy).
El nivel de API de Android mínimo es 23.
A partir de la versión 24.0.0, Google Mobile Ads SDK (Legacy) 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 uno superior.
Cambios en la inicialización y la carga optimizadas
De forma predeterminada, las marcas OPTIMIZE_INITIALIZATION y OPTIMIZE_AD_LOADING se configuran como true. Para obtener más información sobre estas marcas, consulta
Optimiza la inicialización y la carga.
Se quitaron las dependencias 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 ni firebase-ads-lite. En su lugar, usa la dependencia play-services-ads.
Establece parámetros de segmentación personalizada
Para establecer la segmentación personalizada en una solicitud de anuncio, usa addCustomTargeting().
Se quitaron las APIs de orientación obsoletas para los anuncios para inicio de aplicación.
- 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 requieran una orientación. - Se quitó la enumeración
AppOpenAdOrientation.
Se simplificó la devolución de llamada de recompensa para los adaptadores de mediación.
La versión 24.0.0 agrega la devolución de llamada onUserEarnedReward() en MediationRewardedAdCallback y deja de estar disponible onUserEarnedReward(RewardItem).
Los adaptadores de mediación deben comenzar a llamar a onUserEarnedReward() cuando el usuario obtiene una recompensa.
Cuando se reenvían devoluciones de llamada desde adaptadores de mediación, todas las versiones de Google Mobile Ads SDK (Legacy) devuelven la recompensa definida en la IU de Ad Manager en OnUserEarnedRewardListener.
Se quitaron las clases
Se quitaron las siguientes clases sin reemplazo:
DynamicHeightSearchAdRequestSearchAdRequestSearchAdView
Métodos quitados
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 tienen reemplazo:
| Clase | Método |
|---|---|
| Adaptador | loadInterscrollerAd() |
| RtbAdapter | loadRtbInterscrollerAd() |
Migra de la versión 22 a la 23
En los siguientes apartados, se describen los cambios rotundos y las diferencias de comportamiento entre las versiones principales 22 y 23 de Google Mobile Ads SDK (Legacy).
El nivel de API de Android mínimo es 21.
A partir de la versión 23.0.0, Google Mobile Ads SDK (Legacy) 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 un valor superior.
Los métodos AdManagerAdRequest.Builder heredados de la superclase se pueden encadenar.
En la versión 23.0.0, los métodos AdManagerAdRequest.Builder heredados de su elemento superior se pueden encadenar para compilar un AdManagerAdRequest con una sola llamada:
Java
AdManagerAdRequest request = new AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build(); // Builds an AdManagerAdRequest.
Kotlin
var request = AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build() // Builds an AdManagerAdRequest.
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
En los siguientes apartados, se describen los cambios rotundos y las diferencias de comportamiento entre las versiones principales 21 y 22 de Google Mobile Ads SDK (Legacy).
Usa MobileAds.getVersion() para obtener la versión de Google Mobile Ads SDK (Legacy)
El método MobileAds.getVersionString() se quitó en la versión 22.0.0 y se reemplazó por MobileAds.getVersion().
El método nuevo devuelve el número de versión externa 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.
Eliminación del método NativeCustomFormatAd.getVideoMediaView() obsoleto
En la versión 21, Google Mobile Ads SDK (Legacy) te proporcionaba el método NativeCustomFormatAd.getVideoMediaView() para obtener el recurso multimedia de un formato del anuncio nativo personalizado.
A partir de la versión 22, debes crear tu propio MediaView, establecer su contenido multimedia y usar MediaContent.getVideoController() para obtener los controles de video.
v22
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); MediaContent mediaContent = ad.getMediaContent(); if (mediaContent != null && mediaContent.hasVideoContent()) { // Create a MediaView and set its media content. MediaView mediaView = new MediaView(mediaPlaceholder.getContext()); mediaView.setMediaContent(mediaContent); mediaPlaceholder.addView(mediaView); } }
v21
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); VideoController videoController = ad.getVideoController(); if (videoController.hasVideoContent()) { // Add the media view provided by the native ad. mediaPlaceholder.addView(ad.getVideoMediaView()); } }
Consulta la guía de anuncios nativos personalizados para obtener más información.
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 secciones, se describen los cambios rotundos y las diferencias de comportamiento entre las versiones principales 20 y 21 de Google Mobile Ads SDK (Legacy):
Actualiza minSdkVersion a 19 o una versión posterior
A partir de la versión 21.0.0, Google Mobile Ads SDK (Legacy) 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.
Aplicar de manera forzosa la nulabilidad estricta
Como preparación para aplicar la nulabilidad estricta, se agregan anotaciones @NonNull en todas las APIs que antes no definían explícitamente la nulabilidad.
Este cambio puede afectar las apps de Kotlin y las que usan frameworks de verificación de nulos de Java si hay incumplimientos de seguridad nula y no se controlaron previamente 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 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 los métodos de ubicación
Los siguientes métodos de ubicación se quitarán en la versión 21.0.0:
- Es el método
setLocation(Location location)de la claseAdRequest.Builderque establece la ubicación del usuario para la segmentación de mediación. - El método
getLocation()de la claseAdRequestque devuelve 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 claseMediationAdConfigurationque devuelve la ubicación del usuario, si la define elAdRequest.
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 configuren una fuente de anuncios en cascada que no sea una de las fuentes de anuncios admitidas de Ad Manager.
Todas las interfaces de evento personalizado dejaron de estar disponibles y se reemplazaron por la clase Adapter y la interfaz MediationAdLoadCallback.
En la siguiente tabla, se indican la clase o la interfaz correspondientes que debes 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/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. En la versión 19.7.0, se introdujeron muchas APIs nuevas y se dieron de baja o se cambiaron los nombres de muchas clases como preparación para 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 de formatos de pantalla completa
A partir de la versión 20.0.0, los formatos de anuncios intersticiales, recompensados, intersticiales recompensados y de anuncio para inicio de aplicación se estandarizan para seguir un diseño de API coherente.
Todas las APIs de formatos de pantalla completa usan los siguientes principios:
- Un método de carga estático
- Un mecanismo similar de devolución de llamada o controlador de carga
- Dependencia de la clase
FullScreenContentCallbackpara las devoluciones de llamada de la presentación
Eliminación de la API de RewardedVideoAd heredada
La API de RewardedAd más reciente se introdujo por primera vez en marzo de 2019 y ha sido la API de recompensas 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.
Banners inteligentes descontinuados 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 de los anuncios. 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) } }
Eliminación de la devolución de llamada de salida 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, independientemente de si se debe o no a una interacción con un anuncio.
Ten en cuenta que la devolución de llamada onAdLeftApplication nunca se diseñó para ser un controlador de clics en el anuncio, y que usarla para informar clics no generaba 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.
Cambios de nombre de clases
En la siguiente tabla, se enumeran los nombres de clases específicos que se cambiaron o quitaron:
- Se cambió el nombre de la mayoría de las clases relacionadas con
UnifiedNativeAdaNativeAd. - Se quitaron las clases y vistas
MobileAds.Settings,NativeExpressAdView,NativeAppInstallAd,NativeContentAdyInstreamAd. - Todas las clases con el prefijo
Publisherse reemplazaron por el prefijoAdManager. - Se 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 |
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 obsoletos 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 alinearlas con todos los formatos de pantalla completa.
- Se quitaron las funciones de correlator.
| Clase | API v19.5.0 | API v20.0.0 | Notas |
|---|---|---|---|
| AdSize | getPortraitBanner |
getPortraitAnchored |
|
| getLandscapeBanner |
getLandscapeAnchored |
||
| getCurrentOrientation |
getCurrentOrientationAnchored |
||
| MobileAds | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete |
Ahora, el ID de la app está configurado en el archivo 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() | |
| PublisherAdRequest | getGender() | Quitada | |
| getBirthday() | Quitada | ||
| getNetworkExtras() | Quitada | ||
| setManualImpressions |
Quitada | ||
| updateCorrelator() | Quitada | Consulta Filtrado de contenido de anuncios. | |
| PublisherAdRequest.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 |
Hay un objeto ResponseInfo disponible con el método AdView, getResponseInfo().
|
| 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ático proporciona un anuncio que ya está cargado. | |
| 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) | ||
| RewardedInterstitialAdLoad |
onRewardedInterstitialAd |
onAd |
|
| onRewardedInterstitialAd |
onAd |
||
| onRewardedInterstitialAd |
onAd |
||
| PublisherInterstitialAd | new PublisherInterstitialAd() | 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 |