본문으로 건너뛰기

중복제어 가이드

통합 광고 로더(GfpAdLoader)를 통해서 제공되는 Banner, Native Simple, Native 유형의 광고들에 대해서 중복 제어 기능을 지원합니다.

(NDA 모듈에 대해서만 지원합니다)


중복 제어를 위한 GfpDedupeManager 생성

SDK 가 지원 하는 중복 제어 기능을 사용 하기 위해서는 우선적으로 아래와 같이 GfpDedupeManager 의 생성이 필요합니다.

val dedupeManager = GfpDedupeManager(3)

GfpDedupeManager 의 생성자는 아래에서 볼 수 있듯이 numAdsDeduped 라는 이름의 parameter 를 받는 형태인데요.

class GfpDedupeManager(@IntRange(from = 2, to = 5) val numAdsDeduped: Int) {
// . . .
}

여기서 numAdsDeduped 값은 연속된 광고의 중복이 제어되는 chunk 사이즈로 GfpDedupeManager 생성 예시처럼

new GfpDedupeManager(3); 와 같이 선언했을 경우에는 연속된 3개의 광고에 대해서 중복 없는 광고 노출이 가능하게 됩니다.

또한 numAdsDeduped 값은 위 예시에 나와있듯이 2 에서 5 사이의 숫자로 할당하기를 권합니다.


광고 로드

중복 제어 기능을 사용 하면서 광고를 로드하고자 할 때는 앞서 생성한 GfpDedupeManager 를 통해서 광고를 로드 하면 됩니다.

아래와 같이 이미 생성한 GfpDedupeManager 에 광고 로드를 수행할 GfpAdLoader 의 instance 를 parameter 로 전달 하면 됩니다.

GfpDedupeManager#loadAd(GfpAdLoader) method 에 GfpAdLoader 의 instance 를 넘겨줄 경우, SDK 내부에서 중복제어 로직을 수행하며 광고를 로드하게 되며 loadAd(GfpAdLoader) method 를 통해서 전달되는 GfpAdLoader 들은 전달된 순서대로 중복제어 로직을 타게 됩니다.

val dedupeManager = GfpDedupeManager(3)

// . . .

val adLoader1 = GfpAdLoader.Builder(context, adParam)
.withAdListener(/* ... */)
.withNativeSimpleAd(/* ... */)
.build()

val adLoader2 = GfpAdLoader.Builder(context, adParam)
.withAdListener(/* ... */)
.withNativeSimpleAd(/* ... */)
.build()

// . . .

dedupeManager.loadAd(adLoader1)
dedupeManager.loadAd(adLoader2)

광고 이벤트 수신 및 삭제

GfpDedupeManager 는 넘겨받은 GfpAdLoader 들의 중복제어를 수행하는 역할을 할 뿐 광고 이벤트 수신 및 삭제 등 광고 로드와 관련된 기타 사항들은 기존과 같이 GfpAdLoader 를 통하면 됩니다.

또한, GfpDedupeManager 에 loadAd(GfpAdLoader) method 를 통해서 넘겨받은 GfpAdLoader instance 들은 SDK 내부적으로 관리되어 특정 loader 의 cancel() method 가 호출 되더라도 문제 없이 중복 제어 기능을 수행하게 됩니다.


중복제어 동작 설명

GfpDedupeManager 생성시 numAdsDeduped 값을 5로 설정했을 경우, 아래 이미지를 참고해서 중복제어의 동작을 확인해주시면 되겠습니다.

이미지

  • 5번째 광고 view -> (보장)1,2,3,4번째 중복제어
  • 9번째 광고 view -> (보장) 6,7,8번째 중복제어 + (비보장) 1,2,3,4,5 번째 광고
    • 베스트 케이스 시, 1~9까지 중복제어
  • 13번째 광고 view -> (보장) 11,12 간 중복제어 + (비보장) 3~10 번째 광고
    • 베스트 케이스 시, 3~13까지 중복제어