# Native (Google)

Los anuncios nativos son un tipo de anuncio que puede ser mostrado con el mismo estilo visual del resto de la app, lo que permite una integración natural y no-intrusiva con la interfaz de usuario.

Actualmente, desde Wortise ofrecemos la posibilidad de utilizar los anuncios nativos de la plataforma de anuncios de Google ("*Native Advanced*"), de una manera directa y sencilla.

## Integración

Para solicitar un anuncio nativo, es necesario realizar una integración por código tal y como se muestra en el ejemplo a continuación:

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
class MainActivity : Activity() {

    private var googleNativeAd: GoogleNativeAd? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
        googleNativeAd = GoogleNativeAd(
                         this, "Wortise Ad Unit ID", nativeListener).also {
            it.load()
        }
    }
    
    override fun onDestroy() {
        ...
        googleNativeAd?.destroy();
    }
    
    private val nativeListener = object : GoogleNativeAd.Listener() {
            
        override fun onNativeClicked(ad: GoogleNativeAd) {
            // Invocado cuando el anuncio ha sido clickeado
        }
        
        override fun onNativeFailedToLoad(ad: GoogleNativeAd, error: AdError) {
            // Invocado cuando el anuncio no se ha podido cargar
            // (por error o falta de inventario)
        }
        
        override fun onNativeImpression(ad: GoogleNativeAd) {
            // Invocado cuando el anuncio ha generado una impresión
        }
        
        override fun onNativeLoaded(ad: GoogleNativeAd, nativeAd: NativeAd) {
            // Invocado cuando el anuncio ha sido cargado
        }
        
        override fun onNativeRevenuePaid(ad: GoogleNativeAd,
                                         data: Revenuedata) {
            // Invocado cuando el anuncio ha generado un ingreso
        }
    }
}
```

{% endtab %}

{% tab title="Java" %}

```java
public class MainActivity extends Activity {

    private GoogleNativeAd mGoogleNativeAd;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...
        mGoogleNativeAd = new GoogleNativeAd(
                this, "Ad Unit ID de Wortise", mNativeListener);
        mGoogleNativeAd.load();
    }
    
    @Override
    public void onDestroy() {
        ...
        mGoogleNativeAd.destroy();
    }
    
    private GoogleNativeAd.Listener mNativeListener
            = new GoogleNativeAd.Listener() {
            
        @Override
        public void onNativeClicked(@NonNull GoogleNativeAd ad) {
            // Invocado cuando el anuncio ha sido clickeado
        }
        
        @Override
        public void onNativeFailedToLoad(@NonNull GoogleNativeAd ad,
                                         @NonNull AdError error) {
            // Invocado cuando el anuncio no se ha podido cargar
            // (por error o falta de inventario)
        }
        
        @Override
        public void onNativeImpression(@NonNull GoogleNativeAd ad) {
            // Invocado cuando el anuncio ha generado una impresión
        }
        
        @Override
        public void onNativeLoaded(@NonNull GoogleNativeAd ad,
                                   @NonNull NativeAd nativeAd) {
            // Invocado cuando el anuncio ha sido cargado
        }
        
        @Override
        public void onNativeRevenuePaid(@NonNull GoogleNativeAd ad,
                                        @NonNull Revenuedata data) {
            // Invocado cuando el anuncio ha generado un ingreso
        }
    }
}
```

{% endtab %}
{% endtabs %}

Una vez el anuncio nativo ha sido cargado con éxito, obtenido como resultado una instancia de `NativeAd`, es necesario completar la integración siguiendo la documentación de Google al respecto: <https://developers.google.com/ad-manager/mobile-ads-sdk/android/native/advanced?hl=es#display_a_unifiednativead>

### Especificar opciones

La clase `GoogleNativeAd` incluye un método llamado `withNativeAdOptions`, el cual permite indicar opciones personalizadas haciendo uso de la clase `NativeAdOptions` de Google. Este método debe ser llamado antes de realizar la carga del anuncio.

A continuación se muestra un breve ejemplo de uso:

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
val adOptions = NativeAdOptions.Builder()
    // Se establecen las opciones
    .build();

googleNativeAd.withNativeAdOptions(adOptions)
```

{% endtab %}

{% tab title="Java" %}

<pre class="language-java"><code class="lang-java">NativeAdOptions adOptions = new NativeAdOptions.Builder()
<strong>    // Se establecen las opciones
</strong>    .build();

mGoogleNativeAd.withNativeAdOptions(adOptions);
</code></pre>

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.wortise.com/android-sdk/integracion-del-sdk/native-google.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
