Comparta sus comentarios y ayúdenos a definir la hoja de ruta del SDK de anuncios de Google para dispositivos móviles. Responda la Encuesta anual del SDK de anuncios de Google para dispositivos móviles de 2023 antes del cierre del 5 de mayo de 2023.

Anuncios nativos

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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

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étodo onNativeAdLoaded() 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

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étodo onNativeAdLoaded() 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.