메인 콘텐츠로 건너뛰기

개요

UMP(User Messaging Platform) SDK는 GDPR(일반 데이터 보호 규정) 및 CCPA(캘리포니아 소비자 개인정보 보호법) 준수를 위해 맞춤형 광고에 대한 사용자 동의를 관리합니다.
UMP 연동에는 adrop-ads-backfill 모듈이 필요합니다. 시작하기의 설치 가이드를 먼저 완료해주세요.

기본 사용법

Adrop 초기화 후 Consent Manager를 사용하여 사용자 동의를 요청합니다.
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';

// Adrop.initialize() 호출 후 사용
Adrop.consentManager.requestConsentInfoUpdate((result) {
  if (result.error != null) {
    debugPrint('Consent error: ${result.error}');
  }
});

동의 상태

Consent Manager는 다음 상태 중 하나를 반환합니다:
상태설명
unknown동의 상태가 아직 결정되지 않음
required동의 필요 (팝업이 표시됨)
notRequired동의 불필요 (비GDPR 지역)
obtained이미 동의 완료됨

디버그 설정 (테스트 모드)

개발 중에 GDPR/CCPA 동의 흐름을 테스트하세요:
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';

// 동의 요청 전 디버그 지역 설정
// 기기 ID는 자동으로 적용됨
await Adrop.consentManager.setDebugSettings(AdropConsentDebugGeography.eea);  // GDPR 테스트

// 테스트를 위한 동의 초기화
await Adrop.consentManager.reset();

디버그 지역

지역설명
disabled실제 기기 위치 사용
eeaGDPR 테스트 (유럽 경제 지역)
regulatedUSStateCCPA 테스트 (캘리포니아 등)
other규제가 없는 지역 테스트
디버그 설정은 개발 중에만 사용해야 합니다. 프로덕션 배포 전에 제거하거나 비활성화하세요.

전체 예제

import 'package:flutter/material.dart';
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';

class ConsentExample extends StatefulWidget {
  const ConsentExample({super.key});

  @override
  State<ConsentExample> createState() => _ConsentExampleState();
}

class _ConsentExampleState extends State<ConsentExample> {
  String _consentStatus = 'unknown';

  @override
  void initState() {
    super.initState();
    _initializeConsent();
  }

  Future<void> _initializeConsent() async {
    // 먼저 Adrop 초기화
    await Adrop.initialize(false);

    // 디버그 모드에서 디버그 설정
    const bool isDebug = bool.fromEnvironment('dart.vm.product') == false;
    if (isDebug) {
      await Adrop.consentManager.setDebugSettings(AdropConsentDebugGeography.eea);
    }

    // 동의 정보 업데이트 요청
    Adrop.consentManager.requestConsentInfoUpdate((result) {
      if (result.error != null) {
        debugPrint('동의 오류: ${result.error}');
      } else {
        setState(() {
          _consentStatus = result.status?.toString() ?? 'unknown';
        });
      }
    });
  }

  Future<void> _resetConsent() async {
    await Adrop.consentManager.reset();
    await _initializeConsent();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('동의 상태: $_consentStatus'),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: _resetConsent,
              child: const Text('동의 초기화'),
            ),
          ],
        ),
      ),
    );
  }
}

모범 사례

조기 요청

SDK 초기화 직후, 앱 라이프사이클 초기에 동의를 요청하세요.

오류 처리

동의 오류를 적절히 처리하고 대체 동작을 제공하세요.

모든 시나리오 테스트

배포 전에 디버그 설정을 사용하여 모든 동의 시나리오를 테스트하세요.

사용자 선택 존중

동의를 얻거나 거부된 후에는 사용자의 선택을 존중하고 반복적으로 요청하지 마세요.

관련 문서