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

# 개인 정보 보호 관리

> GDPR, CCPA, COPPA 등 개인정보 보호 규정 준수를 위한 DARO iOS SDK 설정 가이드

## 개요

DARO SDK는 퍼블리셔가 앱에서 수집한 개인정보 보호 동의 상태를 각 광고 디맨드에 전달하는 API를 제공합니다. 동의 수집 및 UI는 퍼블리셔가 직접 구현해야 하며, DARO SDK는 그 결과값을 광고 디맨드에 전달하는 역할만 합니다.

<Note>
  개인정보 보호 설정은 광고 요청에 반영되도록 **광고를 로드하기 전에** 적용하세요. `set*` 메소드는 SDK 초기화 전후 언제든 호출할 수 있으며, 이미 초기화된 상태에서 호출하면 갱신된 값이 각 광고 디맨드에 다시 전파됩니다.
</Note>

<Note>
  퍼블리셔가 아무 값도 설정하지 않으면 DARO SDK는 해당 규정에 대해 광고 디맨드에 신호를 전달하지 않습니다. 이 경우 규정별 처리 방식은 아래 각 섹션의 **기본 동작**을 참고하세요.
</Note>

***

## GDPR

GDPR (General Data Protection Regulation)은 유럽 경제 지역(EEA)과 영국의 사용자에게 적용되는 동의 방식의 개인정보 보호 규제입니다. 사용자가 명시적으로 동의한 이후에만 개인 정보를 처리할 수 있습니다.

### DARO SDK 처리

퍼블리셔가 UMP 등 동의 관리 도구(CMP)로 사용자의 동의 여부를 확인한 후, 그 결과를 아래 API로 DARO SDK에 전달하세요. DARO SDK는 전달받은 상태를 각 광고 디맨드에 전파합니다.

```swift theme={null}
DaroAds.shared.setGdpr(.optIn, consentString: consentString)
```

### 설정값

| `DaroGdprStatus` | 의미                                                      |
| ---------------- | ------------------------------------------------------- |
| `.optIn`         | 사용자가 개인 정보 처리와 맞춤형 광고에 **동의**했습니다.                      |
| `.optOut`        | 사용자가 동의를 **거부**했습니다. 광고는 비개인화로 제공됩니다.                   |
| `.notApplicable` | 사용자가 **GDPR 적용 대상이 아닙니다** (예: EEA 외 지역). 개인화 광고가 허용됩니다. |
| `.unknown`       | 동의 팝업을 **아직 표시하지 않은 초기 상태**입니다. 동의 여부 확인 전까지 임시로 사용하세요. |

### 기본 동작

`setGdpr`를 한 번도 호출하지 않으면 상태는 `.unknown`으로 유지되며, 광고 디맨드에 GDPR 신호가 전달되지 않습니다. GDPR 적용 대상 사용자가 있는 앱이라면 반드시 명시적으로 설정하세요.

### 주의사항

`.unknown` 상태는 임시로만 사용하세요. GDPR 적용 대상 사용자에게 동의 팝업을 표시하지 않은 채 `.unknown`을 유지하면 규제 위반이 될 수 있습니다. 동의 여부가 확인되는 즉시 `.optIn` 또는 `.optOut`으로 업데이트하세요.

### consentString

선택 인자입니다 (기본값 `""`). UMP 등 동의 관리 도구(CMP)가 생성한 GDPR 동의 문자열을 전달하세요. 사용하지 않는 경우 빈 값(`""`)으로 두어도 무방합니다. 빈 문자열을 전달하면 기존에 저장된 값을 유지하며 값을 지우지는 않습니다(clear 미지원). CCPA의 `consentString`과는 별개의 값입니다.

### 코드 예시

```swift theme={null}
DaroAds.shared.setGdpr(.optIn, consentString: consentString)
DaroAds.shared.setGdpr(.optOut)
DaroAds.shared.setGdpr(.notApplicable)
DaroAds.shared.setGdpr(.unknown)
```

***

## CCPA

CCPA (California Consumer Privacy Act)를 비롯한 미국 주 개인정보 보호법은 사용자에게 개인 정보 판매를 거부할 권리를 부여합니다. 사용자가 명시적으로 거부하지 않는 한 기본적으로 허용됩니다.

### DARO SDK 처리

퍼블리셔가 사용자의 거부 여부를 확인한 후, 그 결과를 아래 API로 DARO SDK에 전달하세요. DARO SDK는 전달받은 상태를 각 광고 디맨드에 전파합니다.

```swift theme={null}
DaroAds.shared.setCcpa(.optOut, consentString: consentString)
```

### 설정값

| `DaroCcpaStatus` | 의미                                        |
| ---------------- | ----------------------------------------- |
| `.optIn`         | 사용자가 **거부하지 않았습니다.** 개인 정보의 판매/공유가 허용됩니다. |
| `.optOut`        | 사용자가 개인 정보 판매를 **거부**했습니다.                |
| `.notApplicable` | 사용자가 **CCPA 적용 대상이 아닙니다**.                |

### 기본 동작

`setCcpa`를 호출하지 않으면 DARO SDK는 CCPA 신호를 전달하지 않으며, 광고 디맨드는 사용자가 거부하지 않은 것(`.optIn`)과 동일하게 개인 정보 판매/공유와 개인화 광고가 허용된 것으로 처리합니다. CCPA 적용 대상 사용자가 있는 앱이라면 반드시 명시적으로 설정하세요.

### consentString

선택 인자입니다 (기본값 `""`). UMP를 사용한다면 UMP가 생성한 US Privacy String을 전달하세요. UMP를 사용하지 않는 경우 빈 값(`""`)으로 두어도 무방합니다. 빈 문자열을 전달하면 기존에 저장된 값을 유지하며 값을 지우지는 않습니다(clear 미지원). GDPR의 `consentString`과는 별개의 값입니다.

### 주의사항

CCPA의 `.optIn` / `.optOut`은 GDPR과 의미가 다릅니다. CCPA에서 `.optIn`은 "사용자가 거부하지 않았다"는 의미이고, `.optOut`은 "사용자가 개인 정보 판매를 거부했다"는 의미입니다. CCPA는 opt-out 방식이라 `.unknown`에 해당하는 값이 없습니다. 사용자가 아직 응답하지 않은 경우 `.optIn`으로 처리하면 됩니다.

### 코드 예시

```swift theme={null}
DaroAds.shared.setCcpa(.optIn)
DaroAds.shared.setCcpa(.optOut)
DaroAds.shared.setCcpa(.notApplicable)
```

***

## COPPA

COPPA (Children's Online Privacy Protection Act)는 미국의 13세 미만 아동을 보호하는 규제입니다. GDPR·CCPA와 달리 사용자 동의 절차가 아니라, 앱이 아동 대상인지에 대한 퍼블리셔의 선언입니다.

### DARO SDK 처리

퍼블리셔가 앱의 아동 대상 여부를 판단한 후, 아래 API로 DARO SDK에 전달하세요. DARO SDK는 전달받은 선언을 각 광고 디맨드에 전파합니다.

```swift theme={null}
DaroAds.shared.setCoppa(.child)
```

### 설정값

| `DaroCoppaStatus` | 의미                                  |
| ----------------- | ----------------------------------- |
| `.child`          | 앱이 **아동 대상**입니다. 맞춤형 광고가 허용되지 않습니다. |
| `.notChild`       | 앱이 **아동 대상이 아닙니다**.                 |

### 기본 동작

`setCoppa`를 호출하지 않으면 아동 대상 여부가 광고 디맨드에 전달되지 않습니다. 아동 대상 앱이라면 반드시 명시적으로 설정하세요.

### 주의사항

COPPA는 앱 전체가 아동 대상인지 여부를 선언하는 설정입니다. 개별 사용자 단위 설정은 지원하지 않습니다. 일부 사용자만 아동인 경우에도 앱 전체 기준으로 판단하세요.

### 코드 예시

```swift theme={null}
DaroAds.shared.setCoppa(.child)
DaroAds.shared.setCoppa(.notChild)
```

***

## 기존 API에서 마이그레이션

기존 프로퍼티 기반 consent 설정(`hasUserConsent` / `gdprConsentString` / `doNotSell` / `ccpaString` / `isTaggedForChildDirectedTreatment`)은 deprecated 되었습니다. 앞으로는 `set*` 메소드 API를 사용하세요. 기존 프로퍼티는 당분간 동작하지만 내부적으로 아래 `set*` 호출로 연결되며, 향후 제거될 수 있습니다.

| Deprecated                                                 | 대체 API                                                  |
| ---------------------------------------------------------- | ------------------------------------------------------- |
| `DaroAds.shared.hasUserConsent = true`                     | `DaroAds.shared.setGdpr(.optIn)`                        |
| `DaroAds.shared.hasUserConsent = false`                    | `DaroAds.shared.setGdpr(.optOut)`                       |
| `DaroAds.shared.gdprConsentString = "..."`                 | `DaroAds.shared.setGdpr(.optIn, consentString: "...")`  |
| `DaroAds.shared.doNotSell = false`                         | `DaroAds.shared.setCcpa(.optIn)`                        |
| `DaroAds.shared.doNotSell = true`                          | `DaroAds.shared.setCcpa(.optOut)`                       |
| `DaroAds.shared.ccpaString = "..."`                        | `DaroAds.shared.setCcpa(.optOut, consentString: "...")` |
| `DaroAds.shared.isTaggedForChildDirectedTreatment = true`  | `DaroAds.shared.setCoppa(.child)`                       |
| `DaroAds.shared.isTaggedForChildDirectedTreatment = false` | `DaroAds.shared.setCoppa(.notChild)`                    |

<Note>
  기존 `isTaggedForChildDirectedTreatment`에 값을 설정하지 않았던 경우(`nil`)는 `.notChild`와 동일하게 처리됩니다.
</Note>
