Los anuncios nativos son elementos del anuncio que se presentan a los usuarios a través de componentes de la IU nativos de la plataforma. Se muestran con los mismos tipos de vistas con las que ya compilas tus diseños y se puede formatear para que coincidan con el diseño visual de la experiencia del usuario en la que residen. En términos de codificación, esto significa que, cuando se carga un anuncio nativo, tu app recibe un objeto NativeAd
que contiene sus elementos, y la app (en lugar del SDK de anuncios de Google para dispositivos móviles) es responsable de mostrarlos.
En términos generales, hay dos partes para implementar con éxito los anuncios nativos: cargar un anuncio usando el SDK y luego mostrar el contenido del anuncio en tu app.
En esta página, se describe el uso del SDK para cargar anuncios nativos.
Requisitos previos
- Complete la Guía de introducción.
Implementación
Los anuncios nativos se cargan con la clase AdLoader
, que tiene su propia clase Builder
para personalizarla durante la creación. Cuando se agregan objetos de escucha a AdLoader
cuando se crea, una app especifica qué tipos de anuncios nativos está listo para recibir. Luego, AdLoader
solicita solo esos tipos.
Cómo crear un AdLoader
En el siguiente código, se muestra cómo compilar un AdLoader
que puede cargar anuncios nativos:
Java
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // Show the ad. } }) .withAdListener(new AdListener() { @Override public void onAdFailedToLoad(LoadAdError adError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(new NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build();
Kotlin
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ad : NativeAd -> // Show the ad. } .withAdListener(object : AdListener() { override fun onAdFailedToLoad(adError: LoadAdError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build()
Prepárate para el formato NativeAd
El primer método anterior es responsable de preparar AdLoader
para el formato NativeAd
:
forNativeAd()
- Si llamas a este método, se configura
AdLoader
para solicitar anuncios nativos. Cuando un anuncio se carga correctamente, se llama al métodoonNativeAdLoaded()
del objeto de escucha.
Cuando el AdLoader
realiza una solicitud de anuncio, Google selecciona y muestra el anuncio que maximiza el rendimiento del editor.
Cómo configurar un AdListener con AdLoader (opcional)
Durante la creación del AdLoader
anterior, la función withAdListener
establece un AdListener
. El
método toma un AdListener
como su único parámetro, que recibe devoluciones
de llamada de AdLoader
cuando se producen eventos del ciclo de vida de los anuncios:
Java
.withAdListener(new AdListener() { // AdListener callbacks can be overridden here. })
Kotlin
.withAdListener(object : AdListener() { // AdListener callbacks can be overridden here. })
Cargar anuncios
Una vez que termines de crear un elemento AdLoader
, es momento de usarlo para cargar anuncios.
Hay dos métodos disponibles para esto: loadAd()
y loadAds()
.
loadAd()
- Este método envía una solicitud para un solo anuncio. :
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
loadAds()
- Este método envía una solicitud para varios anuncios (hasta cinco):
Java
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
adLoader.loadAds(AdRequest.Builder().build(), 3)
Ambos métodos toman un objeto AdRequest
como su primer parámetro. Esta es la misma clase AdRequest
que usan los anuncios intersticiales y de banners, y puedes usar métodos de la clase AdRequest
para agregar información de segmentación, como lo harías con otros formatos de anuncios.
loadAds()
toma un parámetro adicional: la cantidad de anuncios que el SDK debería intentar cargar para la solicitud. Esta cantidad se limita a cinco y no se garantiza que el SDK muestre la cantidad exacta de anuncios solicitados.
Los anuncios de Google devueltos serán diferentes entre sí. No se garantiza que los anuncios de inventario reservado o de terceros, incluidos los compradores configurados para realizar ofertas o mediaciones en cascada, sean únicos.
Devoluciones de llamada
Después de una llamada a loadAd()
, se realiza una sola devolución de llamada a los métodos de escucha definidos con anterioridad para entregar el objeto de anuncio nativo o informar un error.
Después de una llamada a loadAds()
, se realizan varias devoluciones de llamada de este tipo (al menos una y la cantidad máxima de anuncios solicitados). Las apps que solicitan varios anuncios deben llamar a AdLoader.isLoading()
en sus implementaciones de devolución de llamada para determinar si finalizó el proceso de carga.
A continuación, se muestra un ejemplo que muestra cómo verificar isLoading()
en la devolución de llamada onNativeAdLoaded()
:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { ... // some code that displays the ad. ... if (adLoader.isLoading()) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } } }).build(); adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ... // some code that displays the ad. ... if (adLoader.isLoading) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } }.build() adLoader.loadAds(AdRequest.Builder().build(), 3)
Liberar recursos
Asegúrese de usar el método destroy()
en los anuncios nativos cargados. Esto libera recursos usados y evita fugas de memoria.
Asegúrate de que se destruyan todas las referencias de NativeAd
en el método onDestroy()
de tu actividad.
En tu devolución de llamada onNativeAdLoaded
, asegúrate de destruir los anuncios nativos existentes a los que se haga referencia.
Otra verificación clave es si la actividad se destruye. De ser así, llama a destroy()
en el anuncio que se muestra y regresa de inmediato:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed()` is a method on Activity. if (isDestroyed()) { nativeAd.destroy(); return; } ... } }).build();
Kotlin
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { nativeAd -> // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed` is a method on Activity. if (isDestroyed) { nativeAd.destroy() return@forNativeAd } ... }.build()
Probar siempre con anuncios de prueba
Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios de producción publicados. De lo contrario, podría suspenderse tu cuenta.
La forma más fácil de cargar anuncios de prueba es usar nuestro ID de bloque de anuncios de prueba exclusivo para anuncios nativos avanzados en Android:
ca-app-pub-3940256099942544/2247696110
Se configuró especialmente para mostrar anuncios de prueba en cada solicitud y puedes usarlo en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlo con tu propio ID de bloque de anuncios antes de publicar tu app.
Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de los anuncios móviles, consulta Anuncios de prueba.
Cuándo solicitar anuncios
Las aplicaciones que muestran anuncios nativos pueden solicitarlas con anticipación antes de que se muestren. En muchos casos, esta es la práctica recomendada. Una app que muestra una lista de elementos con anuncios nativos mezclados, por ejemplo, puede cargar anuncios nativos para toda la lista, con la certeza de que algunos se mostrarán solo después de que el usuario se desplace por la vista y otros no se muestren en absoluto.
Aceleración de hardware para anuncios de video
Para que los anuncios de video se muestren correctamente en las vistas de anuncios nativos, debes habilitar la aceleración de hardware.
La aceleración de hardware está habilitada de forma predeterminada, pero algunas apps pueden inhabilitarla. Si esto se aplica a tu app, te recomendamos que habilites la aceleración de hardware para las clases de actividad que usan anuncios.
Habilita la aceleración de hardware
Si tu app no se comporta correctamente con la aceleración de hardware activada de manera global, también puedes controlarla para actividades individuales. A fin de habilitar o inhabilitar la aceleración de hardware, puedes usar el atributo android:hardwareAccelerated
para los elementos <application>
y <activity>
en tu AndroidManifest.xml
. En el siguiente ejemplo, se habilita la aceleración de hardware para toda la app, pero se inhabilita para una actividad:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
Consulta la guía de aceleración de hardware a fin de obtener más información sobre las opciones para controlar la aceleración de hardware. Ten en cuenta que las vistas de anuncios individuales no se pueden habilitar para la aceleración de hardware si esta está inhabilitada. Por lo tanto, la actividad debe tener habilitada la aceleración de hardware.
Cómo mostrar un elemento NativeAd
Una vez que carga un anuncio, lo único que queda es mostrarlo a sus usuarios. Consulta nuestra guía de anuncios nativos avanzados para ver cómo hacerlo.
,Los anuncios nativos son elementos del anuncio que se presentan a los usuarios a través de componentes de la IU nativos de la plataforma. Se muestran con los mismos tipos de vistas con las que ya compilas tus diseños y se puede formatear para que coincidan con el diseño visual de la experiencia del usuario en la que residen. En términos de codificación, esto significa que, cuando se carga un anuncio nativo, tu app recibe un objeto NativeAd
que contiene sus elementos, y la app (en lugar del SDK de anuncios de Google para dispositivos móviles) es responsable de mostrarlos.
En términos generales, hay dos partes para implementar con éxito los anuncios nativos: cargar un anuncio usando el SDK y luego mostrar el contenido del anuncio en tu app.
En esta página, se describe el uso del SDK para cargar anuncios nativos.
Requisitos previos
- Complete la Guía de introducción.
Implementación
Los anuncios nativos se cargan con la clase AdLoader
, que tiene su propia clase Builder
para personalizarla durante la creación. Cuando se agregan objetos de escucha a AdLoader
cuando se crea, una app especifica qué tipos de anuncios nativos está listo para recibir. Luego, AdLoader
solicita solo esos tipos.
Cómo crear un AdLoader
En el siguiente código, se muestra cómo compilar un AdLoader
que puede cargar anuncios nativos:
Java
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // Show the ad. } }) .withAdListener(new AdListener() { @Override public void onAdFailedToLoad(LoadAdError adError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(new NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build();
Kotlin
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ad : NativeAd -> // Show the ad. } .withAdListener(object : AdListener() { override fun onAdFailedToLoad(adError: LoadAdError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build()
Prepárate para el formato NativeAd
El primer método anterior es responsable de preparar AdLoader
para el formato NativeAd
:
forNativeAd()
- Si llamas a este método, se configura
AdLoader
para solicitar anuncios nativos. Cuando un anuncio se carga correctamente, se llama al métodoonNativeAdLoaded()
del objeto de escucha.
Cuando el AdLoader
realiza una solicitud de anuncio, Google selecciona y muestra el anuncio que maximiza el rendimiento del editor.
Cómo configurar un AdListener con AdLoader (opcional)
Durante la creación del AdLoader
anterior, la función withAdListener
establece un AdListener
. El
método toma un AdListener
como su único parámetro, que recibe devoluciones
de llamada de AdLoader
cuando se producen eventos del ciclo de vida de los anuncios:
Java
.withAdListener(new AdListener() { // AdListener callbacks can be overridden here. })
Kotlin
.withAdListener(object : AdListener() { // AdListener callbacks can be overridden here. })
Cargar anuncios
Una vez que termines de crear un elemento AdLoader
, es momento de usarlo para cargar anuncios.
Hay dos métodos disponibles para esto: loadAd()
y loadAds()
.
loadAd()
- Este método envía una solicitud para un solo anuncio. :
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
loadAds()
- Este método envía una solicitud para varios anuncios (hasta cinco):
Java
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
adLoader.loadAds(AdRequest.Builder().build(), 3)
Ambos métodos toman un objeto AdRequest
como su primer parámetro. Esta es la misma clase AdRequest
que usan los anuncios intersticiales y de banners, y puedes usar métodos de la clase AdRequest
para agregar información de segmentación, como lo harías con otros formatos de anuncios.
loadAds()
toma un parámetro adicional: la cantidad de anuncios que el SDK debería intentar cargar para la solicitud. Esta cantidad se limita a cinco y no se garantiza que el SDK muestre la cantidad exacta de anuncios solicitados.
Los anuncios de Google devueltos serán diferentes entre sí. No se garantiza que los anuncios de inventario reservado o de terceros, incluidos los compradores configurados para realizar ofertas o mediaciones en cascada, sean únicos.
Devoluciones de llamada
Después de una llamada a loadAd()
, se realiza una sola devolución de llamada a los métodos de escucha definidos con anterioridad para entregar el objeto de anuncio nativo o informar un error.
Después de una llamada a loadAds()
, se realizan varias devoluciones de llamada de este tipo (al menos una y la cantidad máxima de anuncios solicitados). Las apps que solicitan varios anuncios deben llamar a AdLoader.isLoading()
en sus implementaciones de devolución de llamada para determinar si finalizó el proceso de carga.
A continuación, se muestra un ejemplo que muestra cómo verificar isLoading()
en la devolución de llamada onNativeAdLoaded()
:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { ... // some code that displays the ad. ... if (adLoader.isLoading()) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } } }).build(); adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ... // some code that displays the ad. ... if (adLoader.isLoading) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } }.build() adLoader.loadAds(AdRequest.Builder().build(), 3)
Liberar recursos
Asegúrese de usar el método destroy()
en los anuncios nativos cargados. Esto libera recursos usados y evita fugas de memoria.
Asegúrate de que se destruyan todas las referencias de NativeAd
en el método onDestroy()
de tu actividad.
En tu devolución de llamada onNativeAdLoaded
, asegúrate de destruir los anuncios nativos existentes a los que se haga referencia.
Otra verificación clave es si la actividad se destruye. De ser así, llama a destroy()
en el anuncio que se muestra y regresa de inmediato:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed()` is a method on Activity. if (isDestroyed()) { nativeAd.destroy(); return; } ... } }).build();
Kotlin
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { nativeAd -> // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed` is a method on Activity. if (isDestroyed) { nativeAd.destroy() return@forNativeAd } ... }.build()
Probar siempre con anuncios de prueba
Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios de producción publicados. De lo contrario, podría suspenderse tu cuenta.
La forma más fácil de cargar anuncios de prueba es usar nuestro ID de bloque de anuncios de prueba exclusivo para anuncios nativos avanzados en Android:
ca-app-pub-3940256099942544/2247696110
Se configuró especialmente para mostrar anuncios de prueba en cada solicitud y puedes usarlo en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlo con tu propio ID de bloque de anuncios antes de publicar tu app.
Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de los anuncios móviles, consulta Anuncios de prueba.
Cuándo solicitar anuncios
Las aplicaciones que muestran anuncios nativos pueden solicitarlas con anticipación antes de que se muestren. En muchos casos, esta es la práctica recomendada. Una app que muestra una lista de elementos con anuncios nativos mezclados, por ejemplo, puede cargar anuncios nativos para toda la lista, con la certeza de que algunos se mostrarán solo después de que el usuario se desplace por la vista y otros no se muestren en absoluto.
Aceleración de hardware para anuncios de video
Para que los anuncios de video se muestren correctamente en las vistas de anuncios nativos, debes habilitar la aceleración de hardware.
La aceleración de hardware está habilitada de forma predeterminada, pero algunas apps pueden inhabilitarla. Si esto se aplica a tu app, te recomendamos que habilites la aceleración de hardware para las clases de actividad que usan anuncios.
Habilita la aceleración de hardware
Si tu app no se comporta correctamente con la aceleración de hardware activada de manera global, también puedes controlarla para actividades individuales. A fin de habilitar o inhabilitar la aceleración de hardware, puedes usar el atributo android:hardwareAccelerated
para los elementos <application>
y <activity>
en tu AndroidManifest.xml
. En el siguiente ejemplo, se habilita la aceleración de hardware para toda la app, pero se inhabilita para una actividad:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
Consulta la guía de aceleración de hardware a fin de obtener más información sobre las opciones para controlar la aceleración de hardware. Ten en cuenta que las vistas de anuncios individuales no se pueden habilitar para la aceleración de hardware si esta está inhabilitada. Por lo tanto, la actividad debe tener habilitada la aceleración de hardware.
Cómo mostrar un elemento NativeAd
Una vez que carga un anuncio, lo único que queda es mostrarlo a sus usuarios. Consulta nuestra guía de anuncios nativos avanzados para ver cómo hacerlo.