# Integración del SDK

## Instalar dependencia

Para integrar nuestro SDK para React Native, es necesario ejecutar el siguiente comando en la raíz del proyecto:

```bash
npm install @wortise/react-native-sdk --save
```

{% hint style="info" %}
La última versión del SDK para React Native es la **1.7.6**
{% endhint %}

## Configurar proyecto Expo

Si tu proyecto utiliza el framework **Expo**, el proceso de configuración se puede realizar de una manera sencilla.

Simplemente hay que agregar los siguientes detalles dentro del fichero `app.json` del proyecto:

```json
{
  "expo": {
    "plugins": [
      [
        "@wortise/react-native-sdk",
        {
          "androidGoogleAppId": "ca-app-pub-xxxxxxxxxxxxxx~yyyyyyyyyy",
          "iosGoogleAppId": "ca-app-pub-xxxxxxxxxxxxxx~yyyyyyyyyy"
        }
      ]
    ]
  }
}
```

{% hint style="info" %}
Este valor puede ser localizado en nuestro dashboard, dentro de los detalles de cada aplicación, bajo el nombre `Google App ID`.
{% endhint %}

Tras realizar esta configuración, nuestro plugin se encargará de insertar los "App ID" de Google para ambas plataformas, al igual que los repositorios y otros detalles que son necesarios para completar la integración del SDK.

## Configuración manual

Si tu proyecto no utiliza el framework Expo, o prefieres realizar una configuración manual, debes seguir los siguientes pasos que aparecen a continuación.

### Agregar repositorios (Android)

A continuación, hay que añadir los siguientes repositorios Maven en el bloque `allprojects > repositories` del fichero `android/build.gradle`:

```groovy
allprojects {
    repositories {
        ...
        maven { url 'https://maven.wortise.com/artifactory/public' }
        
        maven { url 'https://android-sdk.is.com/' }
        maven { url 'https://artifact.bytedance.com/repository/pangle' }
        maven { url 'https://cboost.jfrog.io/artifactory/chartboost-ads/' }
    }
}
```

### Configurar Manifest (Android)

Es necesario agregar el siguiente elemento `<meta-data>` en el fichero `android/app/src/main/AndroidManifest.xml`, dentro del bloque `<application>`, con el ID de aplicación de Google como valor:

```xml
<manifest>
    ...
    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>
```

{% hint style="info" %}
Este valor puede ser localizado en nuestro dashboard, dentro de los detalles de cada aplicación, bajo el nombre `Google App ID`.
{% endhint %}

### Configurar Info.plist (iOS)

Es necesario agregar el siguiente parámetro en el fichero `Info.plist`, con el ID de aplicación de Google como valor:

```xml
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxxxx</string>
```

{% hint style="info" %}
Este valor puede ser localizado en nuestro dashboard, dentro de los detalles de cada aplicación, bajo el nombre `Google App ID`.
{% endhint %}

A continuación, solo faltaría añadir el siguiente bloque, en el mismo fichero, para finalizar la correcta integración con Google:

<pre class="language-xml"><code class="lang-xml"><strong>&#x3C;key>SKAdNetworkItems&#x3C;/key>
</strong>&#x3C;array>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>cstr6suwn9.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>4fzdc2evr5.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>4pfyvq9l8r.skadnetwork &#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>2fnua5tdw4.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>ydx93a7ass.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>5a6flpkh64.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>p78axxw29g.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>v72qych5uu.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>ludvb6z3bs.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>cp8zw746q7.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>c6k4g5qg8m.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>s39g8k73mm.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>3qy4746246.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>3sh42y64q3.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>f38h382jlk.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>hs6bdukanm.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>prcb7njmu6.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>v4nxqhlyqp.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>wzmmz9fp6w.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>yclnxrl5pm.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>t38b2kh725.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>7ug5zh24hu.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>9rd848q2bz.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>y5ghdn5j9k.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>n6fk4nfna4.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>v9wttpbfk9.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>n38lu8286q.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>47vhws6wlr.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>kbd757ywx3.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>9t245vhmpl.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>a2p9lx4jpn.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>22mmun2rn5.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>4468km3ulz.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>2u9pt9hc89.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>8s468mfl3y.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>av6w8kgt66.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>klf5c3l5u5.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>ppxm28t8ap.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>424m5254lk.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>ecpz2srf59.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>uw77j35x4d.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>mlmmfzh3r3.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>578prtvx9j.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>4dzt52r2t5.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>gta9lk7p23.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>e5fvkxwrpn.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>8c4e2ghe7u.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>zq492l623r.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>3rd42ekr43.skadnetwork&#x3C;/string>
    &#x3C;/dict>
    &#x3C;dict>
    &#x3C;key>SKAdNetworkIdentifier&#x3C;/key>
    &#x3C;string>3qcr597p9d.skadnetwork&#x3C;/string>
    &#x3C;/dict>
&#x3C;/array>
</code></pre>

## Solicitar consentimiento

{% hint style="success" %}
Es **muy recomendable** solicitar consentimiento al usuario para poder mostrar anuncios personalizados. Esto permitirá mostrar contenido que resulte de mayor interés y generar ingresos superiores.
{% endhint %}

Puede consultar el siguiente apartado para implementar esta solicitud y obtener el consentimiento de los usuarios: [Consentimiento del usuario](https://docs.wortise.com/react-native/consentimiento-del-usuario)

## Inicializar SDK

Existen dos opciones para realizar la inicialización del SDK:

### Opción 1 (recomendado)

La opción más recomendada es realizar la inicialización desde la clase `Application` de la app. Para ello, hay que integrar el siguiente código en el método `onCreate()` del fichero `MainApplication.java`:

```java
WortiseSdk.initialize(this, "tu app key");
```

### Opción 2

En esta opción, la inicialización del SDK se realizaría directamente desde el código JavaScript del proyecto. Para ello, hay que añadir las siguientes líneas de código en un lugar apropiado:

```javascript
import { RNWortiseSdk } from '@wortise/react-native-sdk';

await RNWortiseSdk.initialize('tu app key');
```

## Modo de prueba

Para verificar la integración, el SDK ofrece un modo de prueba (*test mode*) que permite que la app siempre reciba anuncios.

Además de la opción que hay disponible en nuestro dashboard, es posible activar este modo de prueba programáticamente, desde el propio SDK, utilizando el siguiente código:

```javascript
import { RNWortiseAdSettings } from '@wortise/react-native-sdk';

RNWortiseAdSettings.setTestEnabled(true);
```


---

# 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/react-native/integracion-del-sdk.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.
