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