# 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 %}
