타겟팅 설정을 통해 특정 사용자 그룹에게 맞춤 광고를 노출할 수 있습니다. Adrop SDK는 오디언스 타겟팅 방식을 제공합니다.
오디언스 타겟팅 : 사용자의 속성(프로퍼티)을 기반으로 광고를 노출합니다.
타겟팅 데이터를 수집하려면 광고 로드 전에 프로퍼티를 설정해야 합니다.
UID 설정 (선택 사항)
사용자 식별자(UID)를 설정하여 플랫폼 간 타겟팅 데이터를 공유할 수 있습니다. UID는 선택 사항이며, 프로퍼티 기반 및 이벤트 기반 타겟팅에는 필요하지 않습니다.
사용법
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
// 사용자 로그인 후 (선택 사항)
await Adrop . setUID ( 'user_123' );
// 사용자 로그아웃 시
await Adrop . setUID ( '' );
파라미터
파라미터 타입 설명 uidString사용자 고유 식별자 (예: 서비스 회원 ID)
UID는 SHA-256으로 해시되어 전송됩니다. 개인정보(이메일, 전화번호 등)를 직접 전달하지 마세요.
로그아웃 시 빈 문자열('')을 전달하여 UID를 초기화하세요.
오디언스 타겟팅
사용자의 속성 정보(프로퍼티)를 수집하여 특정 사용자 그룹에게 광고를 노출합니다.
프로퍼티 설정
AdropMetrics.setProperty() 메서드를 사용하여 사용자의 속성 정보를 수집합니다.
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
// 문자열 프로퍼티
await AdropMetrics . setProperty ( 'membership_level' , 'premium' );
// 숫자 프로퍼티
await AdropMetrics . setProperty ( 'booking_count' , 15 );
// 불린 프로퍼티
await AdropMetrics . setProperty ( 'is_subscriber' , true );
// null 전달 (프로퍼티 제거)
await AdropMetrics . setProperty ( 'membership_level' , null );
파라미터
파라미터 타입 설명 keyString프로퍼티 키 (최대 64자) valuedynamic프로퍼티 값 (String, int, double, bool, null)
프로퍼티 키는 최대 64자까지 가능합니다.
문자열 값은 최대 256자까지 가능합니다.
숫자 값은 최대 9007199254740991까지 가능합니다.
최대 256개의 프로퍼티를 설정할 수 있습니다.
기본 프로퍼티
Adrop SDK는 타겟팅을 위한 기본 프로퍼티를 제공합니다.
나이 (생일)
생일 정보를 전달하면 자동으로 나이가 계산됩니다.
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
// 연도만 (yyyy)
await AdropMetrics . setProperty ( 'birth' , '1990' );
// 연월 (yyyyMM)
await AdropMetrics . setProperty ( 'birth' , '199003' );
// 연월일 (yyyyMMdd)
await AdropMetrics . setProperty ( 'birth' , '19900315' );
날짜 포맷
포맷 예시 설명 yyyy”1990” 연도만 yyyyMM”199003” 연월 yyyyMMdd”19900315” 연월일
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
// 남성
await AdropMetrics . setProperty ( 'gender' , 'M' );
// 여성
await AdropMetrics . setProperty ( 'gender' , 'F' );
// 그 외
await AdropMetrics . setProperty ( 'gender' , 'O' );
// 미확인
await AdropMetrics . setProperty ( 'gender' , 'U' );
성별 값
SDK에서 제공하는 AdropProperties와 AdropGender 열거형도 사용할 수 있습니다: import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
await AdropMetrics . setProperty ( AdropProperties .birth.code, '19900315' );
await AdropMetrics . setProperty ( AdropProperties .gender.code, AdropGender .male.code);
await AdropMetrics . setProperty ( AdropProperties .age.code, 35 );
나이 직접 설정
생일 대신 나이를 직접 설정할 수도 있습니다.
await AdropMetrics . setProperty ( 'age' , 30 );
birth와 age 중 하나만 설정하면 됩니다. 둘 다 설정된 경우 birth가 우선됩니다.
커스텀 프로퍼티
서비스에 맞는 커스텀 프로퍼티를 설정할 수 있습니다. 커스텀 프로퍼티는 애드컨트롤 콘솔 의 타겟팅 메뉴에서 먼저 정의해야 합니다.
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
// 로컬 액티비티 앱 예시
await AdropMetrics . setProperty ( 'region' , 'Seoul' );
await AdropMetrics . setProperty ( 'booking_count' , 5 );
// 쇼핑몰 앱 예시
await AdropMetrics . setProperty ( 'membership_tier' , 'gold' );
await AdropMetrics . setProperty ( 'total_purchase_amount' , 1500000 );
// 미디어 앱 예시
await AdropMetrics . setProperty ( 'favorite_genre' , 'drama' );
await AdropMetrics . setProperty ( 'is_premium_subscriber' , true );
커스텀 프로퍼티 이름은 콘솔에서 정의한 이름과 정확히 일치해야 합니다. 대소문자를 구분합니다.
이벤트 전송
사용자 행동을 추적하기 위해 이벤트를 전송할 수 있습니다.
이벤트 전송하기
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
// 이벤트 이름만
await AdropMetrics . sendEvent ( DefaultEvents .click.code);
// 파라미터와 함께
await AdropMetrics . sendEvent ( DefaultEvents .purchase.code, {
'item_id' : 'SKU_001' ,
'price' : 29900 ,
'currency' : 'KRW' ,
});
파라미터
파라미터 타입 설명 nameString이벤트 이름 paramsMap<String, dynamic>?이벤트 파라미터 (선택). String, int, double, bool 값을 지원합니다.
하나의 이벤트에 최대 20개의 파라미터를 설정할 수 있습니다.
logEvent()는 버전 1.8.0부터 deprecated되었습니다. sendEvent()를 사용하세요.
프로퍼티 조회
저장된 모든 프로퍼티를 조회할 수 있습니다.
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
final properties = await AdropMetrics . properties ();
debugPrint ( '저장된 프로퍼티: $ properties ' );
사용 예시
로그인 시 프로퍼티 설정
import 'package:flutter/material.dart' ;
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart' ;
class LoginScreen extends StatefulWidget {
const LoginScreen ({ super .key});
@override
State < LoginScreen > createState () => _LoginScreenState ();
}
class _LoginScreenState extends State < LoginScreen > {
Future < void > _onLoginSuccess ( User user) async {
// 기본 프로퍼티 설정
if (user.birthDate != null ) {
await AdropMetrics . setProperty ( 'birth' , user.birthDate);
}
if (user.gender != null ) {
await AdropMetrics . setProperty ( 'gender' , user.gender);
}
// 커스텀 프로퍼티 설정
await AdropMetrics . setProperty ( 'membership_level' , user.membershipLevel);
await AdropMetrics . setProperty ( 'total_booking_count' , user.bookingCount);
// 회원가입 이벤트 전송
await AdropMetrics . sendEvent ( DefaultEvents .signUp.code, {
'method' : 'email' ,
});
// 메인 화면으로 이동
Navigator . of (context). pushReplacement (
MaterialPageRoute (builder : (_) => const MainScreen ()),
);
}
@override
Widget build ( BuildContext context) {
return Scaffold (
// ...
);
}
}
로그아웃 시 초기화
Future < void > _onLogout () async {
// 필요시 프로퍼티도 초기화
await AdropMetrics . setProperty ( 'membership_level' , null );
await AdropMetrics . setProperty ( 'total_booking_count' , null );
}
프로퍼티 업데이트
class UserProfile extends StatelessWidget {
void _onPurchaseComplete ( int purchaseAmount) async {
// 구매 완료 시 프로퍼티 업데이트
final currentTotal = await _getCurrentTotalPurchase ();
await AdropMetrics . setProperty (
'total_purchase_amount' ,
currentTotal + purchaseAmount,
);
// 구매 이벤트 전송
await AdropMetrics . sendEvent ( DefaultEvents .purchase.code, {
'amount' : purchaseAmount,
'currency' : 'KRW' ,
});
}
void _onMembershipUpgrade ( String newTier) async {
// 멤버십 업그레이드 시 프로퍼티 업데이트
await AdropMetrics . setProperty ( 'membership_tier' , newTier);
// 업그레이드 이벤트 전송
await AdropMetrics . sendEvent ( 'membership_upgrade' , {
'new_tier' : newTier,
});
}
@override
Widget build ( BuildContext context) {
return Container ();
}
}
모범 사례
1. 광고 로드 전 프로퍼티 설정
// ✅ 올바른 예시
await AdropMetrics . setProperty ( 'membership_level' , 'premium' );
// 광고 로드...
bannerView. load ();
// ❌ 잘못된 예시
bannerView. load ();
await AdropMetrics . setProperty ( 'membership_level' , 'premium' ); // 광고 로드 후 설정하면 타겟팅이 적용되지 않음
2. 프로퍼티는 변경될 때마다 업데이트
class MyApp extends StatefulWidget {
@override
State < MyApp > createState () => _MyAppState ();
}
class _MyAppState extends State < MyApp > {
@override
void initState () {
super . initState ();
// 앱 시작 시 초기 프로퍼티 설정
_updateUserProperties ();
}
Future < void > _updateUserProperties () async {
final user = await getUserInfo ();
await AdropMetrics . setProperty ( 'membership_level' , user.membershipLevel);
}
}
3. 프로퍼티 초기화
Future < void > onUserLogout () async {
// 필요시 프로퍼티도 초기화
await AdropMetrics . setProperty ( 'membership_level' , null );
await AdropMetrics . setProperty ( 'total_booking_count' , null );
}
관련 문서
FAQ
UID를 설정하지 않으면 타겟팅 광고가 노출되지 않나요?
UID는 선택 사항이며, 설정하지 않아도 프로퍼티 기반 및 이벤트 기반 타겟팅은 정상적으로 작동합니다. UID는 플랫폼 간 타겟팅 데이터를 공유할 때 사용됩니다.
프로퍼티를 설정했는데 콘솔에서 데이터가 보이지 않아요.
프로퍼티 데이터는 수집 후 최대 24시간 내에 콘솔에 반영됩니다. 데이터가 표시되지 않는 경우:
콘솔에서 프로퍼티가 올바르게 정의되었는지 확인하세요.
SDK에서 전달하는 프로퍼티 키가 콘솔과 정확히 일치하는지 확인하세요 (대소문자 구분).
AdropMetrics.setProperty()가 광고 로드 전에 호출되는지 확인하세요.
프로퍼티 값에 null을 전달하면 해당 프로퍼티가 삭제됩니다: await AdropMetrics . setProperty ( 'membership_level' , null );
지원되는 타입은 String, int, double, bool입니다. 배열이나 복잡한 객체는 지원하지 않습니다. 필요한 경우 문자열로 변환하여 전달하세요.