# 안드로이드 SDK 설정

### 지원 OS 버전

AdiSON 오퍼월 SDK는 안드로이드 OS 버전 4.1(API 레벨 16, 코드네임 젤리빈) 이상에서 사용하실 수 있습니다.

### Gradle 설정

* 프로젝트 단위 .gradle 에 아래 Repository를 추가합니다.

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

```groovy
allprojects {
    repositories {
        // AdiSON 오퍼월 저장소
        maven {
            url = 'https://repo.nbt.com/repository/adison-ads-android'
            credentials {
                username 'dist'
                password 'vtOpykLjF9I9o5UUuBEtKuTXcYM4db6Xzxd'
            }
        }
    }
}
```

{% endtab %}
{% endtabs %}

* 모듈 단위 .gradle 에 아래 Dependency를 추가합니다.

{% hint style="warning" %}
매체 버전은 **1.3.48**으로 고정하여 사용바랍니다.
{% endhint %}

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

```groovy
dependencies {
    // AdiSON 오퍼월 SDK
    implementation ('co.adison:adison-offerwall-sdk:{version}@aar') {
        transitive = true  // 종속성 연동을 위한 값
    }
}
```

{% endtab %}
{% endtabs %}

* 구글 광고 ID 처리를 위하여 구글 플레이 서비스의 Ads 라이브러리를 추가합니다.

```groovy
implementation('com.google.android.gms:play-services-ads-identifier:17.0.0')
```

### 오퍼월 초기

* Adison.initialize() 함수를 이용하여 Adison 초기화

  : initialize() 함수는 Main Application이 초기화 되는 시점에 같이 초기화 되도록 구성해 주시기 바랍니다.

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

```kotlin
Adison.initialize(this.applicationContext, PUB_APP_KEY)
Adison.setServer(Server.Development)  // 초기에는 개발환경으로 설정
Adison.debugEnable = true  // 디버그 로그 표시
Adison.setIsTester(true)  // 테스트 유저 설정 
```

{% endtab %}

{% tab title="Java" %}

```java
Adison.initialize(this.getApplicationContext(), PUB_APP_KEY);
Adison.setServer(Server.Development);  // 초기에는 개발환경으로 설정
Adison.setDebugEnabled(true);  // 디버그 로그 표시
Adison.setIsTester(true); // 테스트 유저 설정 
```

{% endtab %}
{% endtabs %}

### 오퍼월 표시&#x20;

* Adison.showOfferwall() 함수를 호출하여 오퍼월 목록을 표시합니다.

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

```kotlin
Adison.showOfferwall()
```

{% endtab %}

{% tab title="Java" %}

```java
Adison.showOfferwall();
```

{% endtab %}
{% endtabs %}

### 유저 식별값 입력

```kotlin
Adison.setUid("573E010013647A49B8F6B3E35E8B3C4")
```

* uid는 추후 적립 처리가 가능하도록 별도로 암호화 한 유저 식별값을 설정해주시기 바랍니다.
* 개인정보(이메일, 이름, 전화번호, 식별가능한 사용자 ID 등)을 사용하면 안됩니다.
* uid는 총 80자 한도에서 설정해주시기 바랍니다.
* 개인정보보호를 위한 별도의 약관을 표시하고 이를 동의한 사용자만 설정해주시기 바랍니다.

{% hint style="warning" %}
uid는 약관 동의한 사용자의 경우만 식별자를 입력해 주시기 바랍니다.&#x20;
{% endhint %}

### 유저 식별값 입력 후 처리 <a href="#offerwall-listener" id="offerwall-listener"></a>

* Adison.setOfferwallListener() 함수를 사용하여 이벤트 수신자를 설정합니다.

#### requestLogin() <a href="#request-login" id="request-login"></a>

* 광고 목록과 상세는 uid가 설정되지 않아도 게스트 사용자로 표시가 가능합니다.
* 이외에 광고 참여, 문의하기 등 uid가 명시적으로 필요하지만 설정되지 않은 경우 리스너의 requestLogin 콜백 메소드를 통해 로그인을 요청하고 있습니다.

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

```kotlin
Adison.setOfferwallListener(object: AdisonOfferwallListener() {
    override fun requestLogin(context: Context?) {
        // 로그인 요청 처리
    }

    override fun onParticipateFailure(error: AdisonError?) {
        // 삭제 예정
    }

    override fun onError(exception: Throwable?) {
        // 삭제 예정
    }
});
```

{% endtab %}

{% tab title="Java" %}

```java
 Adison.setOfferwallListener(new AdisonOfferwallListener() {
    @Override
    public void requestLogin(@Nullable Context context) {
        // 로그인 요청 처리        
    }

    @Override
    public void onParticipateFailure(@Nullable AdisonError error) {
        // 삭제 예정, 처리하지 않음
    }

    @Override
    public void onError(@Nullable Throwable exception) {
        // 삭제 예정, 처리하지 않
    }
});
```

{% endtab %}
{% endtabs %}

### 기타 사항

* 초기화에 사용된 App ID가 Dev App ID일 경우 Adison.setServer() 함수를 이용해 대상 서버를 Development로 변경합니다.
* 사용자가 로그인 한 경우 Adison.setUid() 함수를 사용하여 사용자 아이디를 설정합니다.
* Debug Log  출력이 필요한 경우 Adison.setDebugEnabled() 함수를 사용합니다.
