Android Native

Main - code

private var feedData: FeedData? = null
private var cursor: String = ""
    
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val tvFeedApi = findViewById<TextView>(R.id.tvFeedApi)
    val btRequestFeedApi = findViewById<Button>(R.id.btRequestFeedApi)
    val btImpressionApi = findViewById<Button>(R.id.btImpressionApi)
    val btRequestClickUrl = findViewById<Button>(R.id.btRequestClickUrl)
    val btCheckParticipateUrl = findViewById<Button>(R.id.btCheckParticipateUrl)

    btRequestFeedApi.setOnClickListener {
        SPCPointHome.FeedApi.request(
            deviceADID = [ADID],
            placementID = [지면코드],
            userKey = [userKey],
            cursor = cursor,
            targetFill = 20,
            deviceName = "SHV-E250S",
            gender = "X",
            birthday = "1993-01-09",
            latitude = "0.000",
            longitude = "0.000",
            userAgent = "",
            success = { feed ->
                cursor = feedData?.cursor ?: ""
                feedData = it
                tvFeedApi.text = it.toString()
                Log.d("Feed", feed.toString())

                // 피드 네이티브 요청 성공 결과를 획득하는 획득 메소드. (필수)
                // Response값은 kotlin data class로 구현한 Object를 획득합니다.
                // 객체명 : FeedData
                // - cursor : 할당받은 광고 데이터의 고유 값
                // - List<FeedItemsData> : FeedItemsData의 집합 (가변)
            },
            failure = { code, message ->
                tvFeedApi.text = "$code : $message"
                Log.d("Feed", "$code: $message")
                
                // 피드 네이티브 요청 실패 결과 획득 메소드. (필수)
                // Response값은 code와 message를 획득합니다.
                
                // Error code
                // 9402 - 토큰 획득 실패
                // 9004 - 올바르지 않은 메소드 파라미터
            }
        )
    }
    
    btImpressionApi.setOnClickListener {
        feedData?.let { data ->
            val index = 0
            data.items[index].impression {
                // 호출 완료시 실행
                Log.d("Feed", "impression success")    
            }            
        }
    }
    
    btRequestClickUrl.setOnClickListener {
        feedData?.let { data ->
            val index = 0
            
            if (data.items[index].isActionClick) {
                data.items[index].actionClick(
                    id = data.items[index].id,
                    payload = data.items[index].payload,
                    deviceADID = deviceADID,
                    placementID = placementID,
                    success = { feedParticipate ->
                        Log.d("Feed", "actionClick -> success")
                    },
                    failure = { code, message ->
                        Log.d("Feed", "actionClick -> $code : $message")
                    }
                )
            }
            
            if (data.items[index].isExposureClick) {
                data.items[index].exposureClick { clickUrl ->
                    Log.d("Feed", "exposureClick")
                }
            }
                       
        }
    }
    
    btCheckParticipateUrl.setOnClickListener { 
        feedData?.let { data ->
            val index = 0
            if (data.items[index].isActionClick) {
                data.items[index].checkParticipatedUrl { result ->
                    Log.d("Feed", "checkParticipatedUrl")
                }
            }
        }
    }

}

레이아웃 구현 예시

피드 네이티브 공통 -> Response Parameter로 구현하기 참고

ImpressionUrls

Impression - code

주의사항

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

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

Impression URL 호출을 위한 확장 메소드를 제공합니다.

FeedItemsData.impression {
  // 호출 완료시 실행
}

ClickUrls

Click URL 처리를 위해 액션형 광고와 노출형 광고의 확장 메소드를 제공합니다.

Action Click - code

// 액션형 광고를 체크하는 플래그 변수
if (FeedItemsData.isActionClick) {
  // 액션형 광고일때 사용하는 클릭 메소드
  FeedItemsData.actionClick(
    id = [FeedItemsData.id],
    payload = [FeedItemsData.payload],  
    deviceADID = [deviceADID],
    placementID = [placementID],
    success = { feedParticipate ->
      // 호출 완료시 실행
      // 객체명 : FeedParticipateData
      // - description : 광고에 대한 상세 설명
      // - landingUrl : 매체 지면 아이디 
    },
    failure = { code, message ->
      // 액션형 클릭 요청 실패 결과 획득 메소드. (필수)
      // Response값은 code와 message를 획득합니다.
      
      // Error code
      // 9402 - 토큰 획득 실패
      // 9004 - 올바르지 않은 메소드 파라미터
    }
  )
}

Exposure Click - code

// 노출형 광고를 체크하는 플래그 변수
if (FeedItemsData.isExposureClick) {
  // 노출형 광고일때 사용하는 클릭 메소드
  FeedItemsData.exposrueClick { clickUrl ->
    // clickUrl (String)
  }
}

CheckParticipate - code

// 엑션형 광고를 체크하는 플래그 변수
if (FeedItemsData.isActionClick) {
  // 엑션형 광고일때 사용하는 참여 여부 확인 메소드
  FeedItemsData.checkParticipatedUrl { result ->
    if (result == null) {
      // 네트워크 실패로 인한 참여 여부 확인 실패
    } else if (result == true) {
      // 참여 
    } else {
      // 미참여
    }
  }
}

Last updated