# Android Native

## Main - code <a href="#id-android-feednative" id="id-android-feednative"></a>

```kotlin
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    
    val items: MutableList<DirectADData> = mutableListOf()

     findViewById<Button>(R.id.request).setOnClickListener {
            SPCPointHome.DirectAD.request(
                deviceADID = "$DEVICEADID",
                placementID = "$PLACEMENTID",
                userKey = "$USERKEY",
                success = {items = it},
                // 피드 네이티브 요청 실패 결과 획득 메소드. (필수)
                // Response값은 표를 참고하시기 바랍니다.
                failure = { code, message -> Log.e("AD Request", message) })
                // 피드 네이티브 요청 실패 결과 획득 메소드. (필수)
                // Response값은 code와 message를 획득합니다.
                
                // Error code
                // 9402 - 토큰 획득 실패
                // 9004 - 올바르지 않은 메소드 파라미터
    }
    
    findViewById<Button>(R.id.impression).setOnClickListener {
            items?.let {
                SPCPointHome.DirectAD.impression(
                    placementID = it[0].placementID,
                    advertiseID = it[0].advertiseID,
                    deviceADID = "$DEVICEADID",
                    deviceID = "$DEVICEID",
                    userKey = "$USERKEY",
                    success = { Log.d("AD Impression", "Success") },
                    // impression이 성공한 경우 호출됩니다.
                    failure = { code, message -> Log.e("AD Impression", message) })
                    // impression이 실패한 경우 호출됩니다.
                    
                    // Error code
                    // 9402 - 토큰 획득 실패
                    // 9004 - 올바르지 않은 메소드 파라미터
            }
        }
    
    findViewById<Button>(R.id.adClick).setOnClickListener {
            items?.let {
                SPCPointHome.DirectAD.adClick(
                    placementID = it[0].placementID,
                    advertiseID = it[0].advertiseID,
                    deviceADID = "$DEVICEADID",
                    deviceID = "$DEVICEID",
                    userKey = "$USERKEY",
                    success = { Log.d("AD adClick", "Success") },
                    // adClick이 성공한 경우 호출됩니다.
                    failure = { code, message -> Log.e("AD adClick", message) })
                    // adClick이 실패한 경우 호출됩니다.
                    
                    // Error code
                    // 9402 - 토큰 획득 실패
                    // 9004 - 올바르지 않은 메소드 파라미터
            }
        }
    }
}

```

***

## 광고 요청  <a href="#android-da-request" id="android-da-request"></a>

광고를 조회하는 API 입니다.

### Request

| 파라미터 이름     | 타입                                   | 필수 여부 | 설명                         |
| ----------- | ------------------------------------ | ----- | -------------------------- |
| userKey     | String                               | 필수    | 사용자 키                      |
| placementID | String                               | 필수    | 광고 위치 ID                   |
| deviceADID  | String                               | 필수 아님 | 기기 광고 ID. 없을 경우 빈 값("") 전달 |
| success     | (adList: List) -> Unit               | 필수    | 성공 콜백                      |
| failure     | (code: Int, message: String) -> Unit | 필수    | 실패 콜백                      |

### Response

응답 값은 `DirectADData` 클래스로 이루어져 있습니다.

| 속성 명            | 타입      | 설명             |
| --------------- | ------- | -------------- |
| placementID     | String  | 광고 지면 ID       |
| advertiseID     | String  | 광고 ID          |
| title           | String  | 타이틀            |
| imageUrl        | String  | 이미지 URL        |
| reward          | Int     | 보상값.           |
| landingUrl      | String  | 랜딩 페이지 URL     |
| useInAppBrowser | Boolean | 앱 내 브라우저 사용 여부 |

### Code - request <a href="#code-android-request-directad" id="code-android-request-directad"></a>

```kotlin
 val items: MutableList<DirectADData> = mutableListOf()
 
 findViewById<Button>(R.id.request).setOnClickListener {
            SPCPointHome.DirectAD.request(
                deviceADID = "$DEVICEADID",
                placementID = "$PLACEMENTID",
                userKey = "$USERKEY",
                success = {items = it},
                // 피드 네이티브 요청 실패 결과 획득 메소드. (필수)
                // Response값은 표를 참고하시기 바랍니다.
                failure = { code, message -> Log.e("AD Request", message) })
                // Error code
                    // 9402 - 토큰 획득 실패
                    // 9004 - 올바르지 않은 메소드 파라미터
        }
```

***

## 광고 임프레션 <a href="#android-da-impression" id="android-da-impression"></a>

사용자에게 광고가 노출될 경우 호출하는 API 입니다.

#### <mark style="color:red;">주의사항</mark> <a href="#id-ios" id="id-ios"></a>

광고 노출여부를 확인하기 위해 실행하는 메소드입니다. 매 광고마다 광고가 노출되었을 때, 해당 메소드를 호출해주세요.

호출되지 않을 경우 광고 매출정산이 맞지 않을 수 있습니다.

### Request

| 파라미터 이름     | 타입                                   | 필수 여부 | 설명                         |
| ----------- | ------------------------------------ | ----- | -------------------------- |
| userKey     | String                               | 필수    | 사용자 키                      |
| placementID | String                               | 필수    | 광고 지면 ID                   |
| advertiseID | String                               | 필수    | 광고 ID                      |
| deviceADID  | String                               | 필수 아님 | 기기 광고 ID. 없을 경우 빈 값("") 전달 |
| success     | () -> Unit                           | 필수    | 성공 콜백                      |
| failure     | (code: Int, message: String) -> Unit | 필수    | 실패 콜백                      |

### Response

없음

### Code - impression <a href="#code-android-impression-directad" id="code-android-impression-directad"></a>

{% code fullWidth="false" %}

```kotlin
val items: MutableList<DirectADData> = mutableListOf()

findViewById<Button>(R.id.impression).setOnClickListener {
            items?.let {
                SPCPointHome.DirectAD.impression(
                    placementID = it[0].placementID,
                    advertiseID = it[0].advertiseID,
                    deviceADID = "$DEVICEADID",
                    deviceID = "$DEVICEID",
                    userKey = "$USERKEY",
                    success = { Log.e("AD Impression", "Success") },
                    // impression이 성공한 경우 호출됩니다.
                    failure = { code, message -> Log.e("AD Impression", message) })
                    // Error code
                    // 9402 - 토큰 획득 실패
                    // 9004 - 올바르지 않은 메소드 파라미터
            }
        }
```

{% endcode %}

***

## 광고 클릭 <a href="#android-da-click" id="android-da-click"></a>

사용자가 광고를 참여한 경우 호출하는 API입니다.

### Request <a href="#id-android-clickurls-actionclick" id="id-android-clickurls-actionclick"></a>

| 파라미터 이름     | 타입                                   | 필수 여부 | 설명                         |
| ----------- | ------------------------------------ | ----- | -------------------------- |
| userKey     | String                               | 필수    | 사용자 키                      |
| placementID | String                               | 필수    | 광고 지면 ID                   |
| advertiseID | String                               | 필수    | 광고 ID                      |
| deviceADID  | String                               | 필수 아님 | 기기 광고 ID. 없을 경우 빈 값("") 전달 |
| success     | () -> Unit                           | 필수    | 성공 콜백                      |
| failure     | (code: Int, message: String) -> Unit | 필수    | 실패 콜백                      |

### Response

없음

### Code - adClick <a href="#code-android-click-directad" id="code-android-click-directad"></a>

{% code fullWidth="false" %}

```kotlin
val items: MutableList<DirectADData> = mutableListOf()

findViewById<Button>(R.id.adClick).setOnClickListener {
            items?.let {
                SPCPointHome.DirectAD.adClick(
                    placementID = it[0].placementID,
                    advertiseID = it[0].advertiseID,
                    deviceADID = "$DEVICEADID",
                    deviceID = "$DEVICEID",
                    userKey = "$USERKEY",
                    success = { Log.e("AD adClick", "Success") },
                    // DirectAD가 성공한 경우 호출됩니다.
                    failure = { code, message -> Log.e("AD adClick", message) })
                    // Error code
                    // 9402 - 토큰 획득 실패
                    // 9004 - 올바르지 않은 메소드 파라미터
            }
        }
```

{% endcode %}
