> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adrop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# UMP 연동

> GDPR/CCPA 규정 준수를 위한 Google UMP 연동

## 개요

UMP(User Messaging Platform) SDK는 GDPR(일반 데이터 보호 규정) 및 CCPA(캘리포니아 소비자 개인정보 보호법) 준수를 위해 맞춤형 광고에 대한 사용자 동의를 관리합니다.

<Note>
  UMP 연동에는 `adrop-ads-backfill` 모듈이 필요합니다. [시작하기](/ko/sdk/android/overview)의 설치 가이드를 먼저 완료해주세요.
</Note>

***

## 기본 사용법

Adrop 초기화 후 Consent Manager를 사용하여 사용자 동의를 요청합니다.

<CodeGroup>
  ```kotlin Kotlin theme={null}
  import io.adrop.ads.Adrop
  import io.adrop.ads.consent.AdropConsentListener
  import io.adrop.ads.consent.AdropConsentResult

  class MainActivity : AppCompatActivity() {

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

          // Adrop.initialize() 이후에 호출
          Adrop.consentManager?.requestConsentInfoUpdate(this, object : AdropConsentListener {
              override fun onConsentInfoUpdated(result: AdropConsentResult) {
                  if (result.error != null) {
                      Log.e("Consent", "오류: ${result.error}")
                  }
              }
          })
      }
  }
  ```

  ```java Java theme={null}
  import io.adrop.ads.Adrop;
  import io.adrop.ads.consent.AdropConsentListener;
  import io.adrop.ads.consent.AdropConsentResult;

  public class MainActivity extends AppCompatActivity {

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          // Adrop.initialize() 이후에 호출
          if (Adrop.getConsentManager() != null) {
              Adrop.getConsentManager().requestConsentInfoUpdate(this, new AdropConsentListener() {
                  @Override
                  public void onConsentInfoUpdated(AdropConsentResult result) {
                      if (result.getError() != null) {
                          Log.e("Consent", "오류: " + result.getError());
                      }
                  }
              });
          }
      }
  }
  ```
</CodeGroup>

***

## 동의 상태

Consent Manager는 다음 상태 중 하나를 반환합니다:

| 상태             | 설명                |
| -------------- | ----------------- |
| `UNKNOWN`      | 동의 상태가 아직 결정되지 않음 |
| `REQUIRED`     | 동의 필요 (팝업이 표시됨)   |
| `NOT_REQUIRED` | 동의 불필요 (비GDPR 지역) |
| `OBTAINED`     | 이미 동의 완료됨         |

***

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

개발 중에 GDPR/CCPA 동의 흐름을 테스트하세요:

<CodeGroup>
  ```kotlin Kotlin theme={null}
  import io.adrop.ads.consent.AdropConsentDebugGeography

  if (BuildConfig.DEBUG) {
      // 동의 요청 전에 디버그 지역 설정
      Adrop.consentManager?.setDebugSettings(
          testDeviceHashedIds = listOf("YOUR_HASHED_DEVICE_ID"),  // Logcat에서 확인
          geography = AdropConsentDebugGeography.EEA  // GDPR 테스트
      )

      // 테스트를 위한 동의 상태 리셋
      Adrop.consentManager?.reset(this)
  }
  ```

  ```java Java theme={null}
  import io.adrop.ads.consent.AdropConsentDebugGeography;

  if (BuildConfig.DEBUG) {
      // 동의 요청 전에 디버그 지역 설정
      Adrop.getConsentManager().setDebugSettings(
          Arrays.asList("YOUR_HASHED_DEVICE_ID"),  // Logcat에서 확인
          AdropConsentDebugGeography.EEA  // GDPR 테스트
      );

      // 테스트를 위한 동의 상태 리셋
      Adrop.getConsentManager().reset(this);
  }
  ```
</CodeGroup>

### 디버그 지역

| 지역                   | 설명                  |
| -------------------- | ------------------- |
| `DISABLED`           | 실제 기기 위치 사용         |
| `EEA`                | GDPR 테스트 (유럽 경제 지역) |
| `REGULATED_US_STATE` | CCPA 테스트 (캘리포니아 등)  |
| `OTHER`              | 규제가 없는 지역 테스트       |

<Warning>
  디버그 설정은 개발 중에만 사용해야 합니다. 프로덕션 배포 전에 제거하거나 비활성화하세요.
</Warning>

***

## 모범 사례

<CardGroup cols={2}>
  <Card title="조기 요청" icon="clock">
    SDK 초기화 직후, 앱 라이프사이클 초기에 동의를 요청하세요.
  </Card>

  <Card title="오류 처리" icon="triangle-exclamation">
    동의 오류를 적절히 처리하고 대체 동작을 제공하세요.
  </Card>

  <Card title="모든 시나리오 테스트" icon="vial">
    배포 전에 디버그 설정을 사용하여 모든 동의 시나리오를 테스트하세요.
  </Card>

  <Card title="사용자 선택 존중" icon="user-check">
    동의를 얻거나 거부된 후에는 사용자의 선택을 존중하고 반복적으로 요청하지 마세요.
  </Card>
</CardGroup>

***

## 관련 문서

<CardGroup cols={2}>
  <Card title="타겟팅" icon="bullseye" href="/ko/sdk/android/targeting">
    사용자 및 문맥 타겟팅 설정
  </Card>

  <Card title="시작하기" icon="rocket" href="/ko/sdk/android/overview">
    SDK 설치 및 설정 가이드
  </Card>

  <Card title="레퍼런스" icon="book" href="/ko/sdk/android/reference">
    클래스, 리스너, 에러 코드
  </Card>
</CardGroup>
