Los anuncios nativos son recursos de anuncios que se presentan a los usuarios a través de componentes de IU nativos de la plataforma. Se muestran con los mismos tipos de vistas que ya utilizas para crear tus diseños y se pueden adaptar al diseño visual de tu app.
Cuando se carga un anuncio nativo, tu app recibe un objeto de anuncio que contiene sus recursos, y la app (en lugar del SDK de anuncios de Google para dispositivos móviles) es responsable de mostrarlos.
En términos generales, la implementación correcta de anuncios nativos consta de dos partes: cargar un anuncio con el SDK y, luego, mostrar el contenido del anuncio en tu app.
En esta página, se muestra cómo usar el SDK para cargar anuncios nativos.
Requisitos previos
- Completa la guía de introducción.
- SDK de Google Mobile Ads NextGen 0.6.0-alpha01 o una versión posterior
Realiza siempre pruebas con anuncios de prueba
Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en vez de anuncios activos en fase de producción. De lo contrario, podría suspenderse tu cuenta.
La forma más sencilla de cargar anuncios de prueba es utilizar nuestro ID de unidad de anuncios de prueba exclusivo para anuncios nativos:
Formato del anuncio | ID de unidad de anuncios de muestra |
---|---|
Nativo | /21775744923/example/native |
Anuncio de video nativo | /21775744923/example/native-video |
Carga un anuncio
Para cargar un anuncio nativo, llama al método NativeAdLoader.load()
, que toma un NativeAdRequest
y un NativeAdLoaderCallback
.
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest
class NativeFragment : Fragment() {
private var nativeAd: NativeAd? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
loadAd()
}
private fun loadAd() {
// Build an ad request with native ad options to customize the ad.
val adRequest = NativeAdRequest
.Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
.build()
val adCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Called when a native ad has loaded.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Called when a native ad has failed to load.
}
}
// Load the native ad with our request and callback.
NativeAdLoader.load(adRequest, adCallback)
}
companion object {
// Sample native ad unit ID.
const val AD_UNIT_ID = "/21775744923/example/native"
}
}
Cómo establecer la devolución de llamada del evento de anuncio nativo
Cuando controlas onNativeAdLoaded
, configura el NativeAd
recibido con un NativeAdEventCallback
para definir funciones para recibir eventos del ciclo de vida de anuncios nativos:
nativeAd.adEventCallback =
object : NativeAdEventCallback {
override fun onAdShowedFullScreenContent() {
// Native ad showed full screen content.
}
override fun onAdDismissedFullScreenContent() {
// Native ad dismissed full screen content.
}
override fun onAdFailedToShowFullScreenContent {
// Native ad failed to show full screen content.
}
override fun onAdImpression() {
// Native ad recorded an impression.
}
override fun onAdClicked() {
// Native ad recorded a click.
}
}
Opcional: Carga varios anuncios
Para cargar varios anuncios, llama a load()
con el parámetro opcional numberOfAds
.
El valor máximo que puedes establecer es 5
, que representa la cantidad de anuncios.
Es posible que el SDK de anuncios para dispositivos móviles de próxima generación no devuelva la cantidad exacta de anuncios que solicitaste.
private fun loadAd() {
// Build an ad request with native ad options to customize the ad.
val adRequest = NativeAdRequest
.Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
.build()
val adCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Called when a native ad has loaded.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Called when a native ad has failed to load.
}
override fun onAdLoadingCompleted() {
// Called when all native ads have loaded.
}
}
// Load the native ad with our request and callback.
NativeAdLoader.load(adRequest, 3, adCallback)
}
Los anuncios que devuelve el SDK de anuncios para dispositivos móviles de próxima generación son únicos, aunque es posible que los anuncios del inventario reservado o de compradores externos no lo sean.
Si usas la mediación, no llames al método load()
. Las solicitudes de varios anuncios nativos no funcionan para los IDs de bloques de anuncios configurados para la mediación.
Prácticas recomendadas
Sigue estas reglas cuando cargues anuncios.
Las apps que usan anuncios nativos en una lista deben almacenar en caché previamente la lista de anuncios.
Cuando realices la precarga de anuncios, borra la caché y vuelve a cargarla después de una hora.
Limita el almacenamiento en caché de anuncios nativos solo a lo que sea necesario. Por ejemplo, cuando se realiza el almacenamiento previo en caché, solo se almacenan en caché los anuncios que son visibles de inmediato en la pantalla. Los anuncios nativos tienen una gran huella de memoria, y almacenarlos en caché sin destruirlos genera un uso excesivo de la memoria.
Destruye los anuncios nativos cuando ya no los uses.
Aceleración de hardware para anuncios de video
Para que los anuncios de video se muestren correctamente en las vistas de tus anuncios nativos, debe estar habilitada la aceleración por 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 por hardware para las clases de Activity que usan anuncios.
Cómo habilitar la aceleración de hardware
Si tu app no se comporta de manera adecuada con la aceleración de hardware activada globalmente, también puedes controlarla en actividades individuales. Para habilitar o inhabilitar la aceleración de hardware, usa 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 por hardware para obtener más información sobre las opciones para controlar la aceleración por hardware. Ten en cuenta que las vistas de anuncios individuales no se pueden habilitar para la aceleración de hardware si la actividad está inhabilitada, por lo que la actividad en sí debe tener habilitada la aceleración de hardware.
Mostrar tu anuncio
Una vez que hayas cargado un anuncio, solo te quedará mostrarlo a tus usuarios. Visita nuestra guía avanzada sobre anuncios nativos para saber cómo hacerlo.
Ejemplo
Descarga y ejecuta la app de ejemplo que demuestra el uso del SDK de anuncios de Google para dispositivos móviles de próxima generación.