메인 콘텐츠로 건너뛰기

개요

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

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');
성별 값
설명
M남성
F여성
O그 외
U미확인

나이 직접 설정

생일 대신 나이를 직접 설정할 수도 있습니다.
await AdropMetrics.setProperty('age', 30);
birthage 중 하나만 설정하면 됩니다. 둘 다 설정된 경우 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.logEvent('button_click');

// 파라미터와 함께
await AdropMetrics.logEvent('purchase', {
  'item_id': 'SKU_001',
  'price': 29900,
  'currency': 'KRW',
});

파라미터

파라미터타입설명
nameString이벤트 이름
paramsdynamic이벤트 파라미터 (선택)
하나의 이벤트에 최대 20개의 파라미터를 설정할 수 있습니다.

프로퍼티 조회

저장된 모든 프로퍼티를 조회할 수 있습니다.
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 {
    // UID 설정
    await Adrop.setUID(user.id);

    // 기본 프로퍼티 설정
    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.logEvent('login', {
      'method': 'email',
      'is_first_login': user.isFirstLogin,
    });

    // 메인 화면으로 이동
    Navigator.of(context).pushReplacement(
      MaterialPageRoute(builder: (_) => const MainScreen()),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // ...
    );
  }
}

로그아웃 시 초기화

Future<void> _onLogout() async {
  // UID 초기화
  await Adrop.setUID('');

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

  // 로그아웃 이벤트 로깅
  await AdropMetrics.logEvent('logout');
}

프로퍼티 업데이트

class UserProfile extends StatelessWidget {
  void _onPurchaseComplete(int purchaseAmount) async {
    // 구매 완료 시 프로퍼티 업데이트
    final currentTotal = await _getCurrentTotalPurchase();
    await AdropMetrics.setProperty(
      'total_purchase_amount',
      currentTotal + purchaseAmount,
    );

    // 구매 이벤트 로깅
    await AdropMetrics.logEvent('purchase', {
      'amount': purchaseAmount,
      'currency': 'KRW',
    });
  }

  void _onMembershipUpgrade(String newTier) async {
    // 멤버십 업그레이드 시 프로퍼티 업데이트
    await AdropMetrics.setProperty('membership_tier', newTier);

    // 업그레이드 이벤트 로깅
    await AdropMetrics.logEvent('membership_upgrade', {
      'new_tier': newTier,
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

베스트 프랙티스

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

// ✅ 올바른 예시
await Adrop.setUID('user_123');
// 광고 로드...
bannerView.load();

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

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 Adrop.setUID(user.id);
    await AdropMetrics.setProperty('membership_level', user.membershipLevel);
  }
}

3. 로그아웃 시 UID 초기화

Future<void> onUserLogout() async {
  // UID 초기화
  await Adrop.setUID('');

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

관련 문서


FAQ

UID를 설정하지 않아도 광고는 노출되지만, 오디언스 타겟팅이 적용되지 않습니다. 기본 타겟팅(국가, 언어 등)만 사용됩니다. 정교한 타겟팅을 위해서는 UID 설정이 필수입니다.
프로퍼티 데이터는 수집 후 최대 24시간 내에 콘솔에 반영됩니다. 데이터가 표시되지 않는 경우:
  1. 콘솔에서 프로퍼티가 올바르게 정의되었는지 확인하세요.
  2. SDK에서 전달하는 프로퍼티 키가 콘솔과 정확히 일치하는지 확인하세요 (대소문자 구분).
  3. AdropMetrics.setProperty()가 광고 로드 전에 호출되는지 확인하세요.
프로퍼티 값에 null을 전달하면 해당 프로퍼티가 삭제됩니다:
await AdropMetrics.setProperty('membership_level', null);
지원되는 타입은 String, int, double, bool입니다. 배열이나 복잡한 객체는 지원하지 않습니다. 필요한 경우 문자열로 변환하여 전달하세요.