> ## 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` | 사용자가 동의를 **거부**했습니다. SDK에 동의 거부 상태를 전달합니다. |
| `.notApplicable` | 사용자가 **GDPR 적용 대상이 아닙니다** (예: EEA 외 지역). SDK에 적용 대상이 아님을 전달합니다. |
| `.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 신호를 전달하지 않습니다. 값을 생략하는 것은 사용자의 동의나 허용 여부를 확인한 것과 다릅니다. CCPA 적용 대상 사용자가 있는 앱이라면 반드시 명시적으로 설정하세요.

### consentString

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

### 주의사항

CCPA의 `.optIn` / `.optOut`은 GDPR과 의미가 다릅니다. CCPA에서 `.optIn`은 "사용자가 거부하지 않았다"는 의미이고, `.optOut`은 "사용자가 개인 정보 판매를 거부했다"는 의미입니다. CCPA는 opt-out 방식이라 `.unknown`에 해당하는 값이 없습니다. 앱에서 확인한 상태를 명시적으로 전달하세요.

### 코드 예시

```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에 전달하세요. 광고 디맨드별 지원 범위가 다르므로 이 호출만으로 모든 광고에 동일한 처리가 적용된다고 가정하지 마세요. 아동 대상 앱을 전환하기 전에는 [cs@daro.so](mailto:cs@daro.so)로 지원 범위를 확인하세요.

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

### 설정값

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

### 기본 동작

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

### 주의사항

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

### 코드 예시

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

***

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

`hasUserConsent`, `doNotSell`, `isTaggedForChildDirectedTreatment`는 deprecated되었습니다. 상태와 동의 문자열은 아래 `set*` API로 설정하세요. 문자열만 이전하려면 이미 확인한 동의 상태를 함께 전달해야 하며, 문자열이 있다는 이유로 동의 상태를 변경하지 마세요.

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

<Note>
  `currentGdprStatus`와 `currentCcpaStatus`는 앱에서 확인한 상태를 뜻합니다. 아무 설정도 하지 않는 것과 `.notChild`를 명시적으로 설정하는 것은 다릅니다. 앱의 대상에 맞는 값을 전달하세요.
</Note>
