# SDK integration

## Setup project

Depending of the language used by the project for the Gradle scripts, you must follow the steps from the corresponding tab:

{% tabs %}
{% tab title="Groovy" %}
In first place, it is needed to add the following Maven repositories inside the `repositories` block of the `settings.gradle` file:

{% hint style="info" %}
In the projects which still use an old structure, the `repositories` block can be found on the  `build.gradle` file located at the app-level.
{% endhint %}

```groovy
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/' }
}
```

Once added, you can proceed to integrate the SDK. To do so, you have to add the following line inside the `dependencies` block of the `build.gradle` file located at the app-level:

```groovy
implementation 'com.wortise:android-sdk:1.7.2'
```

In case of not already have it, it is needed to activate the Java 8 compatibility in the project. This can be achieved by adding these extra lines inside the `android` block, also in the same `build.gradle` file:

```groovy
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
```

{% endtab %}

{% tab title="Kotlin" %}
In first place, it is needed to add the following Maven repositories inside the `repositories` block of the `settings.gradle.kts` file:

```kotlin
dependencyResolutionManagement {
    repositories {
        maven { url = uri("https://maven.wortise.com/artifactory/public") }
    
        maven { url = uri("https://android-sdk.is.com/") }
        maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
        maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
    }
}
```

Once added, you can proceed to integrate the SDK. To do so, you have to add the following line inside the `dependencies` block of the `build.gradle.kts` file located at the app-level:

```groovy
implementation("com.wortise:android-sdk:1.7.2")
```

In case of not already have it, it is needed to activate the Java 8 compatibility in the project. This can be achieved by adding these extra lines inside the `android` block, also in the same `build.gradle.kts` file:

```groovy
compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}
```

{% endtab %}
{% endtabs %}

## Setup Manifest

It is needed to add the following `<meta-data>` element in the `AndroidManifest.xml` file, inside the `<application>` block, with Google's application ID as value:

```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" %}
This value can be found in our dashboard, inside the app details, under the name `Google App ID`.
{% endhint %}

## Request consent

{% hint style="success" %}
It is **very recommended** to request the user consent to be able to show personalised ads. This will allow to display content of more interest and generate higher revenues.
{% endhint %}

You can consult the following section to implement this request and obtain the user consent: [User consent](https://docs.wortise.com/en/android-sdk/user-consent)

## Initialize SDK

Our recommendation is to initialize the SDK in the `Application` class of the app, but it can also be done in any main `Activity`.

To do so, it is necessary to integrate the following code in the `onCreate` method:

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

```kotlin
WortiseSdk.initialize(this, "your app key")
```

{% endtab %}

{% tab title="Java" %}

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

{% endtab %}
{% endtabs %}

### Initialization listener

There are two possible ways to know when the SDK finishes its initialization:

#### Passing a listener as the last parameter of the method `WortiseSdk.initialize`

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

```kotlin
WortiseSdk.initialize(this, "your app key") {
    // This listener will be invoked when the initialization finishes
}
```

{% endtab %}

{% tab title="Java" %}

```java
WortiseSdk.initialize(this, "your app key", () -> {
    // This listener will be invoked when the initialization finishes
    return Unit.INSTANCE;
});
```

{% endtab %}
{% endtabs %}

#### Using the method `WortiseSdk.wait`

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

```kotlin
WortiseSdk.wait {
    // This listener will be invoked when the initialization finishes
}
```

{% endtab %}

{% tab title="Java" %}

```java
WortiseSdk.wait(() -> {
    // This listener will be invoked when the initialization finishes
    return Unit.INSTANCE;
});
```

{% endtab %}
{% endtabs %}

## Test mode

To verify the integration, the SDK provides a test mode that allows the app to always receive ads.

Beside the option that is available in our dashboard, you can programmatically enable this test mode, from the SDK itself, by using the following code:

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

```kotlin
AdSettings.testEnabled = true
```

{% endtab %}

{% tab title="Java" %}

```java
AdSettings.setTestEnabled(true);
```

{% endtab %}
{% endtabs %}
