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


---

# 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/en/android-sdk/sdk-integration.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.
