본문으로 건너뛰기

맞춤 AdChoices

GFP SDK 는 네이티브 광고의 AdChoices 영역을 앱의 디자인에 맞게 맞춤 설정할 수 있는 두 가지 방법을 제공합니다:

기능설명사용 사례
맞춤 AdChoices 아이콘기본 i 또는 x 아이콘을 원하는 아이콘으로 변경피드 형태에서 콘텐츠와 광고의 Look and Feel 통일
맞춤 AdChoices 화면AdChoices 클릭 시 나타나는 화면을 직접 구현앱 전체 디자인과 일관된 사용자 경험 제공

맞춤 AdChoices 아이콘

GFP를 통해 전달되는 S2S 네이티브 광고에서는 GfpAdChoicesView 영역에 i 또는 x 아이콘이 표시됩니다. 피드 형태의 지면에서 콘텐츠와 광고의 Look and Feel을 통일하고 싶다면, AdChoices 아이콘을 커스터마이징할 수 있습니다.

정보

콘텐츠 우상단에 ... 아이콘을 사용하고 있고, 광고에서도 동일한 ... 아이콘을 사용하고 싶은 경우에 유용합니다.

XML 레이아웃 설정

네이티브 광고 레이아웃 작성 시, GfpAdChoicesView에 맞춤 속성을 추가합니다:

<com.naver.gfpsdk.GfpAdChoicesView
android:id="@+id/ad_choices_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:gfp__ad__ad_choices_drawable_dark="@drawable/YOUR_ICON_DRAWABLE_FOR_DARK_MODE"
app:gfp__ad__ad_choices_drawable_light="@drawable/YOUR_ICON_DRAWABLE_FOR_LIGHT_MODE" />

속성 설명

  • gfp__ad__ad_choices_drawable_dark: 다크 모드용 아이콘 drawable 리소스 ID
  • gfp__ad__ad_choices_drawable_light: 라이트 모드용 아이콘 drawable 리소스 ID
다크 모드 미적용 시

다크 모드를 사용하지 않는 경우, 두 속성에 동일한 drawable 리소스 ID를 설정하는 것을 권장합니다.

맞춤 AdChoices 화면

GFP SDK 6.5.0 버전부터 지원되는 기능입니다. S2S 네이티브 광고의 GfpAdChoicesView 클릭 시 나타나는 화면을 직접 구현할 수 있습니다.

주의사항
  • 맞춤 AdChoices 사용 시 GfpAdChoicesView 내에 기본 AdChoices 아이콘이 렌더링되지 않습니다
  • 반드시 직접 AdChoices 아이콘을 UI에 구성해야 합니다
지원 범위

DFP, FAN, InMobi와 같은 C2S 광고 제공자의 네이티브 광고에서는 지원되지 않습니다.

1. 맞춤 AdChoices 활성화

네이티브 광고 요청 시 GfpNativeAdOptions 를 생성할 때 setEnableCustomAdChoices(true) 로 설정해서 GfpAdLoader 에 전달합니다.

val adLoader = GfpAdLoader.Builder(context, adParam)
.withAdListener(object: AdEventListener() {
// 광고 이벤트 처리
})
.withNativeAd(
GfpNativeAdOptions.Builder()
.setEnableCustomAdChoices(true) // 맞춤 AdChoices 활성화
.build()
) { nativeAd ->
// 네이티브 광고 로드 완료 시 처리
}
.build()

2. AdChoices 데이터 타입 확인 및 UI 구성

네이티브 광고 로드 후 GfpAdChoicesData 타입을 확인하여 맞춤 UI 를 구성합니다.

GfpAdChoicesData 타입 분류

타입포함 데이터용도
AdMuteadMuteFeedbacks광고 뮤트 처리만 가능
PrivacyprivacyUrl개인정보 처리방침 URL 로 이동만 가능
OptOutadMuteFeedbacks, privacyUrl광고 뮤트와 개인정보 처리방침 모두 가능

필드 설명

필드설명
adMuteFeedbacks광고 뮤트 사유 목록 (AdMuteFeedback 객체 리스트)
privacyUrl개인정보 처리방침 URL (privacy 아이콘 클릭 시 랜딩 페이지)
val adLoader = GfpAdLoader.Builder(context, adParam)
.withAdListener(object: AdEventListener() {
// 광고 이벤트 처리
})
.withNativeAd(
GfpNativeAdOptions.Builder()
.setEnableCustomAdChoices(true)
.build()
) { nativeAd ->
val adChoicesData = nativeAd.adChoicesData

// 맞춤 AdChoices 사용 가능 여부 확인
if (nativeAd.isCustomAdChoicesEnabled && adChoicesData != null) {
setupCustomAdChoices(adChoicesData)
} else {
hideCustomAdChoices()
}
}
.build()

private fun setupCustomAdChoices(adChoicesData: GfpAdChoicesData) {
// AdChoices 버튼 표시
adChoicesButton.visibility = View.VISIBLE

// 클릭 이벤트 설정
adChoicesButton.setOnClickListener {
when (adChoicesData) {
is GfpAdChoicesData.AdMute -> {
// 광고 뮤트 사유 목록 표시
showMuteFeedbackDialog(adChoicesData.adMuteFeedbacks)
}
is GfpAdChoicesData.Privacy -> {
// 개인정보 처리방침 페이지로 이동
openPrivacyUrl(adChoicesData.privacyUrl)
}
is GfpAdChoicesData.OptOut -> {
// 광고 뮤트와 개인정보 처리방침 옵션 모두 표시
showOptOutDialog(adChoicesData.adMuteFeedbacks, adChoicesData.privacyUrl)
}
}
}
}

private fun hideCustomAdChoices() {
adChoicesButton.visibility = View.GONE
}

3. 광고 뮤트 처리

사용자가 특정 뮤트 사유를 선택했을 때의 처리 방법입니다.

처리 단계

  1. 뮤트 사유 전달: 선택된 AdMuteFeedbackGfpNativeAd 객체에 전달
  2. UI 숨김 처리: 원하는 방식으로 광고를 숨김 처리
private fun onMuteFeedbackSelected(adMuteFeedback: AdMuteFeedback) {
// 1. SDK에 뮤트 사유 전달
nativeAd.muteAd(adMuteFeedback)

// 2. UI에서 광고 숨김 처리
hideAdvertisement()
}

private fun hideAdvertisement() {
// 앱에서 원하는 방식으로 광고 숨김 처리
// 예: 광고 뷰 제거, 리스트에서 아이템 삭제 등
}
중요

setEnableCustomAdChoices(true) 설정이 되어 있을 때만 뮤트 기능이 동작합니다.

4. 개인정보 처리방침 URL 처리

Privacy 아이콘 클릭 시 해당 URL로 이동하는 처리입니다.

private fun openPrivacyUrl(privacyUrl: String) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(privacyUrl))
context.startActivity(intent)
}