메인 콘텐츠로 건너뛰기

개요

타겟팅 설정을 통해 특정 사용자 그룹에게 맞춤 광고를 노출할 수 있습니다. Adrop SDK는 두 가지 타겟팅 방식을 제공합니다:
  • 오디언스 타겟팅: 사용자의 속성(프로퍼티)을 기반으로 광고를 노출합니다.
  • 문맥 타겟팅: 콘텐츠의 맥락(카테고리, 주제 등)을 기반으로 광고를 노출합니다.
타겟팅 데이터를 수집하려면 광고 로드 전에 UID와 프로퍼티를 설정해야 합니다.

UID 설정

사용자 식별자(UID)를 설정하여 사용자를 구분합니다. UID는 타겟팅 광고의 기반이 됩니다.

사용법

import io.adrop.ads.Adrop

// 사용자 로그인 후
Adrop.setUID("user_123")

// 사용자 로그아웃 시
Adrop.setUID("")

파라미터

파라미터타입설명
uidString사용자 고유 식별자 (예: 서비스 회원 ID)
UID는 SHA-256으로 해시되어 전송됩니다. 개인정보(이메일, 전화번호 등)를 직접 전달하지 마세요.
로그아웃 시 빈 문자열("")을 전달하여 UID를 초기화하세요.

오디언스 타겟팅

사용자의 속성 정보(프로퍼티)를 수집하여 특정 사용자 그룹에게 광고를 노출합니다.

프로퍼티 설정

AdropMetrics.setProperty() 메서드를 사용하여 사용자의 속성 정보를 수집합니다.
import io.adrop.ads.metrics.AdropMetrics

// 문자열 프로퍼티
AdropMetrics.setProperty("membership_level", "premium")

// 숫자 프로퍼티
AdropMetrics.setProperty("booking_count", 15)

// 불린 프로퍼티
AdropMetrics.setProperty("is_subscriber", true)

// null 전달 (프로퍼티 제거)
AdropMetrics.setProperty("membership_level", null)

파라미터

파라미터타입설명
keyString프로퍼티 키 (최대 64자)
valueAny?프로퍼티 값 (String, Int, Double, Long, Boolean, null)
  • 프로퍼티 키는 최대 64자까지 가능합니다.
  • 문자열 값은 최대 256자까지 가능합니다.
  • 숫자 값은 최대 9007199254740991까지 가능합니다.
  • 최대 256개의 프로퍼티를 설정할 수 있습니다.

기본 프로퍼티

Adrop SDK는 타겟팅을 위한 기본 프로퍼티를 제공합니다. AdropKeyAdropValue 클래스를 사용하여 값을 설정합니다.

나이 (생일)

생일 정보를 전달하면 자동으로 나이가 계산됩니다.
import io.adrop.ads.metrics.AdropMetrics
import io.adrop.ads.model.AdropKey
import io.adrop.ads.model.AdropValue

// 연도만 (yyyy)
AdropMetrics.setProperty(AdropKey.BIRTH, "1990")

// 연월 (yyyyMM)
AdropMetrics.setProperty(AdropKey.BIRTH, "199003")

// 연월일 (yyyyMMdd)
AdropMetrics.setProperty(AdropKey.BIRTH, "19900315")
날짜 포맷 상수
상수설명
AdropValue.AdropBirth.formatYear"yyyy"연도만 (예: “1990”)
AdropValue.AdropBirth.formatYearMonth"yyyyMM"연월 (예: “199003”)
AdropValue.AdropBirth.formatYearMonthDay"yyyyMMdd"연월일 (예: “19900315”)

성별

import io.adrop.ads.metrics.AdropMetrics
import io.adrop.ads.model.AdropKey
import io.adrop.ads.model.AdropValue

// 남성
AdropMetrics.setProperty(AdropKey.GENDER, AdropValue.AdropGender.MALE)

// 여성
AdropMetrics.setProperty(AdropKey.GENDER, AdropValue.AdropGender.FEMALE)

// 그 외
AdropMetrics.setProperty(AdropKey.GENDER, AdropValue.AdropGender.OTHER)

// 미확인
AdropMetrics.setProperty(AdropKey.GENDER, AdropValue.UNKNOWN)
성별 값 상수
상수설명
AdropValue.AdropGender.MALE"M"남성
AdropValue.AdropGender.FEMALE"F"여성
AdropValue.AdropGender.OTHER"O"그 외
AdropValue.UNKNOWN"U"미확인

나이 직접 설정

생일 대신 나이를 직접 설정할 수도 있습니다.
import io.adrop.ads.metrics.AdropMetrics
import io.adrop.ads.model.AdropKey

AdropMetrics.setProperty(AdropKey.AGE, 30)
BIRTHAGE 중 하나만 설정하면 됩니다. 둘 다 설정된 경우 BIRTH가 우선됩니다.

커스텀 프로퍼티

서비스에 맞는 커스텀 프로퍼티를 설정할 수 있습니다. 커스텀 프로퍼티는 애드컨트롤 콘솔타겟팅 메뉴에서 먼저 정의해야 합니다.
import io.adrop.ads.metrics.AdropMetrics

// 로컬 액티비티 앱 예시
AdropMetrics.setProperty("region", "Seoul")
AdropMetrics.setProperty("booking_count", 5)

// 쇼핑몰 앱 예시
AdropMetrics.setProperty("membership_tier", "gold")
AdropMetrics.setProperty("total_purchase_amount", 1500000)

// 미디어 앱 예시
AdropMetrics.setProperty("favorite_genres", arrayOf("drama", "action"))
AdropMetrics.setProperty("is_premium_subscriber", true)
커스텀 프로퍼티 이름은 콘솔에서 정의한 이름과 정확히 일치해야 합니다. 대소문자를 구분합니다.

프로퍼티 사용 예시

사용자가 앱의 특정 화면에 진입할 때 프로퍼티를 업데이트하는 예시입니다.
import io.adrop.ads.Adrop
import io.adrop.ads.metrics.AdropMetrics
import io.adrop.ads.model.AdropKey
import io.adrop.ads.model.AdropValue

class ProfileActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_profile)

        // 사용자 정보 가져오기
        val user = getUserInfo()

        // UID 설정
        Adrop.setUID(user.id)

        // 기본 프로퍼티 설정
        AdropMetrics.setProperty(AdropKey.BIRTH, user.birthDate)
        AdropMetrics.setProperty(AdropKey.GENDER, user.gender)

        // 커스텀 프로퍼티 설정
        AdropMetrics.setProperty("membership_level", user.membershipLevel)
        AdropMetrics.setProperty("total_booking_count", user.bookingCount)
    }
}

문맥 타겟팅

콘텐츠의 맥락(카테고리, 주제 등)에 따라 광고를 노출합니다. 배너 광고와 네이티브 광고에서 contextId 속성을 사용합니다.

배너 광고

XML에서 설정

<io.adrop.ads.banner.AdropBanner
    android:id="@+id/adropBanner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:adrop_unit_id="PUBLIC_TEST_UNIT_ID_320_50"
    app:adrop_context_id="article_sports" />

코드에서 설정

import io.adrop.ads.banner.AdropBanner

val adropBanner = AdropBanner(this, "PUBLIC_TEST_UNIT_ID_320_50", "article_sports")

// 또는 기존 인스턴스에 설정
val existingBanner = findViewById<AdropBanner>(R.id.adropBanner)
// contextId는 생성자에서만 설정 가능합니다

네이티브 광고

네이티브 광고는 생성자에서 contextId를 설정할 수 있습니다.
import io.adrop.ads.nativead.AdropNativeAd
import io.adrop.ads.nativead.AdropNativeAdListener

val nativeAd = AdropNativeAd(this, "PUBLIC_TEST_UNIT_ID_NATIVE")
nativeAd.listener = object : AdropNativeAdListener {
    override fun onAdReceived(ad: AdropNativeAd) {
        // 광고 수신 성공
    }

    override fun onAdFailedToReceive(ad: AdropNativeAd, errorCode: Int) {
        // 광고 수신 실패
    }
}

// contextId와 함께 광고 로드
nativeAd.load("article_technology")

Context ID 사용 예시

뉴스 앱에서 기사 카테고리에 따라 광고를 노출하는 예시입니다.
import io.adrop.ads.banner.AdropBanner

class ArticleActivity : AppCompatActivity() {
    private lateinit var adropBanner: AdropBanner

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_article)

        // 기사 카테고리 가져오기
        val articleCategory = getArticleCategory() // "sports", "technology", "entertainment" 등

        // 카테고리에 맞는 Context ID로 배너 생성
        val contextId = "article_$articleCategory"
        adropBanner = AdropBanner(this, "YOUR_UNIT_ID", contextId)

        // 레이아웃에 추가
        val container = findViewById<ViewGroup>(R.id.ad_container)
        container.addView(adropBanner)

        // 광고 로드
        adropBanner.load()
    }
}
Context ID는 콘솔에서 정의한 문맥 타겟팅 카테고리와 일치해야 합니다.

베스트 프랙티스

1. UID는 광고 로드 전에 설정

// ✅ 올바른 예시
Adrop.setUID("user_123")
adropBanner.load()

// ❌ 잘못된 예시
adropBanner.load()
Adrop.setUID("user_123") // 광고 로드 후 설정하면 타겟팅이 적용되지 않음

2. 의미 있는 Context ID 사용

// ✅ 올바른 예시
val contextId = "article_${article.category}" // "article_sports", "article_tech"
val adropBanner = AdropBanner(this, unitId, contextId)

// ❌ 잘못된 예시
val contextId = "page_${randomNumber}" // 의미 없는 랜덤 값
val adropBanner = AdropBanner(this, unitId, contextId)

3. 프로퍼티는 변경될 때마다 업데이트

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 앱 시작 시 초기 프로퍼티 설정
        updateUserProperties()
    }

    fun onUserPurchaseComplete(purchaseAmount: Int) {
        // 구매 완료 시 프로퍼티 업데이트
        val currentTotal = getCurrentTotalPurchase()
        AdropMetrics.setProperty("total_purchase_amount", currentTotal + purchaseAmount)
    }

    fun onMembershipUpgrade(newTier: String) {
        // 멤버십 업그레이드 시 프로퍼티 업데이트
        AdropMetrics.setProperty("membership_tier", newTier)
    }
}

4. 로그아웃 시 UID 초기화

fun onUserLogout() {
    // UID 초기화
    Adrop.setUID("")

    // 필요시 프로퍼티도 초기화
    AdropMetrics.setProperty("membership_level", null)
    AdropMetrics.setProperty("total_booking_count", null)
}

관련 문서


FAQ

UID를 설정하지 않아도 광고는 노출되지만, 오디언스 타겟팅이 적용되지 않습니다. 기본 타겟팅(국가, 언어 등)만 사용됩니다. 정교한 타겟팅을 위해서는 UID 설정이 필수입니다.
프로퍼티 데이터는 수집 후 최대 24시간 내에 콘솔에 반영됩니다. 데이터가 표시되지 않는 경우:
  1. 콘솔에서 프로퍼티가 올바르게 정의되었는지 확인하세요.
  2. SDK에서 전달하는 프로퍼티 키가 콘솔과 정확히 일치하는지 확인하세요 (대소문자 구분).
  3. AdropMetrics.setProperty()가 광고 로드 전에 호출되는지 확인하세요.
Context ID는 콘텐츠의 맥락을 나타내는 의미 있는 문자열이어야 합니다. 예를 들어:
  • 뉴스 앱: "article_sports", "article_tech", "article_entertainment"
  • 쇼핑 앱: "category_fashion", "category_electronics"
  • 동영상 앱: "video_drama", "video_comedy"
콘솔에서 정의한 문맥 타겟팅 카테고리와 일치하도록 설정하세요.
네, 문자열 배열, 숫자 배열, 불린 배열을 모두 지원합니다. 예를 들어 사용자의 관심사를 배열로 전달할 수 있습니다:
AdropMetrics.setProperty("favorite_genres", arrayOf("drama", "action", "comedy"))
프로퍼티 값에 null을 전달하면 해당 프로퍼티가 삭제됩니다:
AdropMetrics.setProperty("membership_level", null)