> ## 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.

# 레퍼런스

> Adrop iOS SDK의 클래스, 프로토콜, 열거형, 타입 정의입니다.

## 클래스

### Adrop

SDK의 메인 클래스입니다. SDK 초기화 및 전역 설정을 관리합니다.

#### 정적 메서드

| 메서드                                                       | 반환 타입                     | 설명                     |
| --------------------------------------------------------- | ------------------------- | ---------------------- |
| `initialize(production:useInAppBrowser:targetCountries:)` | `void`                    | SDK 초기화                |
| `setUID(_:)`                                              | `void`                    | 사용자 식별자 설정             |
| `setTheme(_:)`                                            | `void`                    | 앱 테마 설정                |
| `handleDeepLink(url:)`                                    | `Bool`                    | 딥링크 처리                 |
| `openQuest(channel:path:)`                                | `@discardableResult Bool` | Quest 화면 열기            |
| `registerWebView(_:)`                                     | `void`                    | 백필 광고를 위한 WKWebView 등록 |

#### 정적 속성

| 속성               | 타입                     | 설명                                               |
| ---------------- | ---------------------- | ------------------------------------------------ |
| `sdkVersion`     | `String`               | SDK 버전 (읽기 전용)                                   |
| `consentManager` | `AdropConsentManager?` | Consent 관리자 (AdropAdsBackfill 설치 시 자동 설정, 읽기/쓰기) |

#### 초기화 메서드

```swift theme={null}
static func initialize(
    production: Bool = false,
    useInAppBrowser: Bool = false,
    targetCountries: [String]? = nil
)
```

<ParamField body="production" type="Bool" default="false">
  프로덕션 모드. 배포 시 `true`로 설정
</ParamField>

<ParamField body="useInAppBrowser" type="Bool" default="false">
  인앱 브라우저 사용 여부. `true`일 경우 광고 클릭 시 앱 내에서 열림
</ParamField>

<ParamField body="targetCountries" type="[String]?" default="nil">
  타겟 국가 코드 배열 (예: \["KR", "US"]). `nil`일 경우 모든 국가
</ParamField>

**사용 예시:**

```swift theme={null}
// AppDelegate.swift
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
    Adrop.initialize(production: false)
    return true
}
```

#### 사용자 식별자 설정

```swift theme={null}
static func setUID(_ uid: String)
```

<ParamField body="uid" type="String" required>
  사용자를 식별할 수 있는 고유 ID (최대 100자)
</ParamField>

**사용 예시:**

```swift theme={null}
Adrop.setUID("user_12345")
```

#### 테마 설정

```swift theme={null}
static func setTheme(_ theme: AdropTheme)
```

<ParamField body="theme" type="AdropTheme" required>
  앱 테마 (light, dark, auto)
</ParamField>

**사용 예시:**

```swift theme={null}
Adrop.setTheme(.dark)
```

***

### AdropBanner

배너 광고를 표시하는 클래스입니다. `UIView`를 상속받습니다.

#### 초기화

```swift theme={null}
init(unitId: String, contextId: String = "")
```

<ParamField body="unitId" type="String" required>
  애드컨트롤 콘솔에서 생성한 배너 광고 유닛 ID
</ParamField>

<ParamField body="contextId" type="String">
  문맥 타겟팅 ID (기본값: 빈 문자열)
</ParamField>

#### 메서드

| 메서드                        | 반환 타입  | 설명                             |
| -------------------------- | ------ | ------------------------------ |
| `load()`                   | `void` | 광고 요청 및 로드                     |
| `open(_:useInAppBrowser:)` | `void` | URL 열기 (기본값: `destinationURL`) |

#### 정적 메서드

| 메서드                                 | 반환 타입  | 설명                                                             |
| ----------------------------------- | ------ | -------------------------------------------------------------- |
| `loads(unitId:contextId:delegate:)` | `void` | 최대 5개 배너 광고 일괄 로드 — [일괄 로드](/ko/sdk/ios/banner#일괄-로드-loads) 참고 |

#### 정적 속성

| 속성              | 타입    | 설명                                    |
| --------------- | ----- | ------------------------------------- |
| `maxLoadsBatch` | `Int` | `loads(...)`가 반환하는 광고의 최대 개수 (값: `5`) |

#### 속성

| 속성                    | 타입                                         | 설명                                 |
| --------------------- | ------------------------------------------ | ---------------------------------- |
| `unitId`              | `String`                                   | 유닛 ID (읽기 전용)                      |
| `contextId`           | `String`                                   | 문맥 타겟팅 ID (읽기 전용, init에서 설정)       |
| `creativeSize`        | `CGSize`                                   | 광고 크리에이티브 크기 (읽기 전용, 기본값 zero)     |
| `destinationURL`      | `String?`                                  | 광고 목적지 URL (읽기 전용)                 |
| `txId`                | `String`                                   | 트랜잭션 ID (읽기 전용)                    |
| `campaignId`          | `String`                                   | 캠페인 ID (읽기 전용)                     |
| `creativeId`          | `String`                                   | 크리에이티브 ID (읽기 전용)                  |
| `isBackfilled`        | `Bool`                                     | 백필 광고 여부 (읽기 전용)                   |
| `useCustomClick`      | `Bool`                                     | 커스텀 클릭 처리 사용 여부 (읽기/쓰기)            |
| `browserTarget`       | `BrowserTarget?`                           | 광고 클릭 시 URL 열기 방식 (읽기 전용)          |
| `delegate`            | `AdropBannerDelegate?`                     | Delegate (읽기/쓰기)                   |
| `onAdReceived`        | `((AdropBanner) -> Void)?`                 | Closure callback for ad received   |
| `onAdFailedToReceive` | `((AdropBanner, AdropErrorCode) -> Void)?` | Closure callback for ad failed     |
| `onAdImpression`      | `((AdropBanner) -> Void)?`                 | Closure callback for ad impression |
| `onAdClicked`         | `((AdropBanner) -> Void)?`                 | Closure callback for ad clicked    |
| `onAdVideoStart`      | `((AdropBanner) -> Void)?`                 | 동영상 재생 시작 시 클로저 콜백                 |
| `onAdVideoEnd`        | `((AdropBanner) -> Void)?`                 | 동영상 재생 종료 시 클로저 콜백                 |

**사용 예시:**

```swift theme={null}
let banner = AdropBanner(unitId: "YOUR_UNIT_ID", contextId: "article_123")
banner.delegate = self
banner.load()
```

***

### AdropNativeAd

네이티브 광고 데이터를 관리하는 클래스입니다.

#### 초기화

```swift theme={null}
init(unitId: String, contextId: String = "")
```

<ParamField body="unitId" type="String" required>
  애드컨트롤 콘솔에서 생성한 네이티브 광고 유닛 ID
</ParamField>

<ParamField body="contextId" type="String">
  문맥 타겟팅 ID (기본값: 빈 문자열)
</ParamField>

#### 메서드

| 메서드                        | 반환 타입  | 설명                             |
| -------------------------- | ------ | ------------------------------ |
| `load()`                   | `void` | 광고 요청 및 로드                     |
| `open(_:useInAppBrowser:)` | `void` | URL 열기 (기본값: `destinationURL`) |

#### 정적 메서드

| 메서드                                 | 반환 타입  | 설명                                                               |
| ----------------------------------- | ------ | ---------------------------------------------------------------- |
| `loads(unitId:contextId:delegate:)` | `void` | 최대 5개 네이티브 광고 일괄 로드 — [일괄 로드](/ko/sdk/ios/native#일괄-로드-loads) 참고 |

#### 정적 속성

| 속성              | 타입    | 설명                                    |
| --------------- | ----- | ------------------------------------- |
| `maxLoadsBatch` | `Int` | `loads(...)`가 반환하는 광고의 최대 개수 (값: `5`) |

#### 속성

| 속성                           | 타입                                           | 설명                                                       |
| ---------------------------- | -------------------------------------------- | -------------------------------------------------------- |
| `unitId`                     | `String`                                     | 유닛 ID (읽기 전용)                                            |
| `contextId`                  | `String`                                     | 문맥 타겟팅 ID (읽기 전용, init에서 설정)                             |
| `txId`                       | `String`                                     | 트랜잭션 ID (읽기 전용)                                          |
| `campaignId`                 | `String`                                     | 캠페인 ID (읽기 전용)                                           |
| `creativeId`                 | `String`                                     | 크리에이티브 ID (읽기 전용)                                        |
| `isLoaded`                   | `Bool`                                       | 광고 로드 여부 (읽기 전용)                                         |
| `isBackfilled`               | `Bool`                                       | 백필 광고 여부 (읽기 전용)                                         |
| `headline`                   | `String`                                     | 광고 제목 (읽기 전용)                                            |
| `body`                       | `String`                                     | 광고 본문 (읽기 전용)                                            |
| `callToAction`               | `String`                                     | 행동 유도 버튼 텍스트 (읽기 전용)                                     |
| `icon`                       | `String`                                     | 광고 아이콘 URL (읽기 전용)                                       |
| `cover`                      | `String`                                     | 광고 커버 이미지 URL (읽기 전용)                                    |
| `asset`                      | `String`                                     | 메인 이미지 URL (읽기 전용)                                       |
| `creative`                   | `String`                                     | HTML 크리에이티브 콘텐츠 (읽기 전용)                                  |
| `advertiser`                 | `String`                                     | 광고주명 (읽기 전용)                                             |
| `advertiserURL`              | `String`                                     | 광고주 URL (읽기 전용)                                          |
| `profile`                    | `AdropNativeAdProfile`                       | 광고주 프로필 (읽기 전용)                                          |
| `extra`                      | `[String: String]`                           | 추가 텍스트 필드 (읽기 전용)                                        |
| `accountTag`                 | `[String: Any]`                              | 계정 태그 데이터 (읽기 전용)                                        |
| `creativeTag`                | `[String: Any]`                              | 크리에이티브 태그 데이터 (읽기 전용)                                    |
| `creativeSize`               | `CGSize`                                     | 광고 크리에이티브 크기 (읽기 전용, 기본값 zero)                           |
| `destinationURL`             | `String?`                                    | 광고 목적지 URL (읽기 전용)                                       |
| `useCustomClick`             | `Bool`                                       | 커스텀 클릭 처리 사용 여부 (읽기/쓰기)                                  |
| `preferredAdChoicesPosition` | `AdropAdChoicesPosition`                     | 백필 네이티브 광고의 AdChoices 마크 표시 위치 (읽기/쓰기, 기본값: `.topRight`) |
| `browserTarget`              | `BrowserTarget?`                             | 광고 클릭 시 URL 열기 방식 (읽기 전용)                                |
| `delegate`                   | `AdropNativeAdDelegate?`                     | Delegate (읽기/쓰기)                                         |
| `onAdReceived`               | `((AdropNativeAd) -> Void)?`                 | Closure callback for ad received                         |
| `onAdFailedToReceive`        | `((AdropNativeAd, AdropErrorCode) -> Void)?` | Closure callback for ad failed                           |
| `onAdImpression`             | `((AdropNativeAd) -> Void)?`                 | Closure callback for ad impression                       |
| `onAdClicked`                | `((AdropNativeAd) -> Void)?`                 | Closure callback for ad clicked                          |
| `onAdVideoStart`             | `((AdropNativeAd) -> Void)?`                 | 동영상 재생 시작 시 클로저 콜백                                       |
| `onAdVideoEnd`               | `((AdropNativeAd) -> Void)?`                 | 동영상 재생 종료 시 클로저 콜백                                       |

**사용 예시:**

```swift theme={null}
let nativeAd = AdropNativeAd(unitId: "YOUR_UNIT_ID")
nativeAd.delegate = self
nativeAd.load()

// 광고 로드 후
titleLabel.text = nativeAd.headline
bodyLabel.text = nativeAd.body
ctaButton.setTitle(nativeAd.callToAction, for: .normal)
```

***

### AdropInterstitialAd

전면 광고를 표시하는 클래스입니다.

#### 초기화

```swift theme={null}
init(unitId: String)
```

<ParamField body="unitId" type="String" required>
  애드컨트롤 콘솔에서 생성한 전면 광고 유닛 ID
</ParamField>

#### 메서드

| 메서드                             | 반환 타입  | 설명       |
| ------------------------------- | ------ | -------- |
| `load()`                        | `void` | 광고 사전 로드 |
| `show(fromRootViewController:)` | `void` | 광고 표시    |

##### show 메서드

```swift theme={null}
func show(fromRootViewController viewController: UIViewController)
```

<ParamField body="viewController" type="UIViewController" required>
  광고를 표시할 기준 뷰 컨트롤러
</ParamField>

#### 속성

| 속성                           | 타입                                                 | 설명                                 |
| ---------------------------- | -------------------------------------------------- | ---------------------------------- |
| `delegate`                   | `AdropInterstitialAdDelegate?`                     | Delegate (읽기/쓰기)                   |
| `isLoaded`                   | `Bool`                                             | 광고가 로드되었는지 여부 (읽기 전용)              |
| `unitId`                     | `String`                                           | 유닛 ID (읽기 전용)                      |
| `txId`                       | `String`                                           | 트랜잭션 ID (읽기 전용)                    |
| `campaignId`                 | `String`                                           | 캠페인 ID (읽기 전용)                     |
| `creativeId`                 | `String`                                           | 크리에이티브 ID (읽기 전용)                  |
| `isBackfilled`               | `Bool`                                             | 백필 광고 여부 (읽기 전용)                   |
| `destinationURL`             | `String`                                           | 광고 목적지 URL (읽기 전용)                 |
| `browserTarget`              | `BrowserTarget?`                                   | 광고 클릭 시 URL 열기 방식 (읽기 전용)          |
| `onAdReceived`               | `((AdropInterstitialAd) -> Void)?`                 | Closure callback for ad received   |
| `onAdFailedToReceive`        | `((AdropInterstitialAd, AdropErrorCode) -> Void)?` | Closure callback for ad failed     |
| `onAdImpression`             | `((AdropInterstitialAd) -> Void)?`                 | Closure callback for ad impression |
| `onAdClicked`                | `((AdropInterstitialAd) -> Void)?`                 | Closure callback for ad clicked    |
| `onAdWillPresentFullScreen`  | `((AdropInterstitialAd) -> Void)?`                 | Closure callback before presenting |
| `onAdDidPresentFullScreen`   | `((AdropInterstitialAd) -> Void)?`                 | Closure callback after presenting  |
| `onAdWillDismissFullScreen`  | `((AdropInterstitialAd) -> Void)?`                 | Closure callback before dismissing |
| `onAdDidDismissFullScreen`   | `((AdropInterstitialAd) -> Void)?`                 | Closure callback after dismissing  |
| `onAdFailedToShowFullScreen` | `((AdropInterstitialAd, AdropErrorCode) -> Void)?` | Closure callback for show failure  |

**사용 예시:**

```swift theme={null}
let interstitial = AdropInterstitialAd(unitId: "YOUR_UNIT_ID")
interstitial.delegate = self
interstitial.load()

// 광고가 로드된 후
if interstitial.isLoaded {
    interstitial.show(fromRootViewController: self)
}
```

***

### AdropRewardedAd

보상형 광고를 표시하는 클래스입니다.

#### 초기화

```swift theme={null}
init(unitId: String)
```

<ParamField body="unitId" type="String" required>
  애드컨트롤 콘솔에서 생성한 보상형 광고 유닛 ID
</ParamField>

#### 메서드

| 메서드                                                      | 반환 타입  | 설명                 |
| -------------------------------------------------------- | ------ | ------------------ |
| `load()`                                                 | `void` | 광고 사전 로드           |
| `show(fromRootViewController:userDidEarnRewardHandler:)` | `void` | 광고 표시 및 리워드 핸들러 설정 |

##### show 메서드

```swift theme={null}
func show(
    fromRootViewController viewController: UIViewController,
    userDidEarnRewardHandler: @escaping (_ type: Int, _ amount: Int) -> Void
)
```

<ParamField body="viewController" type="UIViewController" required>
  광고를 표시할 기준 뷰 컨트롤러
</ParamField>

<ParamField body="userDidEarnRewardHandler" type="(_ type: Int, _ amount: Int) -> Void" required>
  사용자가 보상을 획득했을 때 호출될 클로저. `type`은 보상 유형, `amount`는 Ad Control 콘솔에서 설정한 보상 수량입니다.
</ParamField>

#### 속성

| 속성                              | 타입                                             | 설명                                 |
| ------------------------------- | ---------------------------------------------- | ---------------------------------- |
| `delegate`                      | `AdropRewardedAdDelegate?`                     | Delegate (읽기/쓰기)                   |
| `isLoaded`                      | `Bool`                                         | 광고가 로드되었는지 여부 (읽기 전용)              |
| `unitId`                        | `String`                                       | 유닛 ID (읽기 전용)                      |
| `txId`                          | `String`                                       | 트랜잭션 ID (읽기 전용)                    |
| `campaignId`                    | `String`                                       | 캠페인 ID (읽기 전용)                     |
| `creativeId`                    | `String`                                       | 크리에이티브 ID (읽기 전용)                  |
| `isBackfilled`                  | `Bool`                                         | 백필 광고 여부 (읽기 전용)                   |
| `destinationURL`                | `String`                                       | 광고 목적지 URL (읽기 전용)                 |
| `browserTarget`                 | `BrowserTarget?`                               | 광고 클릭 시 URL 열기 방식 (읽기 전용)          |
| `serverSideVerificationOptions` | `AdropServerSideVerificationOptions?`          | 서버 사이드 검증 옵션 (읽기/쓰기)               |
| `onAdReceived`                  | `((AdropRewardedAd) -> Void)?`                 | Closure callback for ad received   |
| `onAdFailedToReceive`           | `((AdropRewardedAd, AdropErrorCode) -> Void)?` | Closure callback for ad failed     |
| `onAdImpression`                | `((AdropRewardedAd) -> Void)?`                 | Closure callback for ad impression |
| `onAdClicked`                   | `((AdropRewardedAd) -> Void)?`                 | Closure callback for ad clicked    |
| `onAdWillPresentFullScreen`     | `((AdropRewardedAd) -> Void)?`                 | Closure callback before presenting |
| `onAdDidPresentFullScreen`      | `((AdropRewardedAd) -> Void)?`                 | Closure callback after presenting  |
| `onAdWillDismissFullScreen`     | `((AdropRewardedAd) -> Void)?`                 | Closure callback before dismissing |
| `onAdDidDismissFullScreen`      | `((AdropRewardedAd) -> Void)?`                 | Closure callback after dismissing  |
| `onAdFailedToShowFullScreen`    | `((AdropRewardedAd, AdropErrorCode) -> Void)?` | Closure callback for show failure  |

**사용 예시:**

```swift theme={null}
let rewardedAd = AdropRewardedAd(unitId: "YOUR_UNIT_ID")
rewardedAd.delegate = self
rewardedAd.load()

// 광고가 로드된 후
if rewardedAd.isLoaded {
    rewardedAd.show(fromRootViewController: self) { type, amount in
        print("사용자가 보상을 획득했습니다! type: \(type), amount: \(amount)")
        // 보상 지급 로직
    }
}
```

***

### AdropPopupAd

팝업 광고를 표시하는 클래스입니다.

#### 초기화

```swift theme={null}
init(unitId: String)
```

<ParamField body="unitId" type="String" required>
  애드컨트롤 콘솔에서 생성한 팝업 광고 유닛 ID
</ParamField>

#### 메서드

| 메서드                             | 반환 타입  | 설명                             |
| ------------------------------- | ------ | ------------------------------ |
| `load()`                        | `void` | 광고 사전 로드                       |
| `show(fromRootViewController:)` | `void` | 광고 표시                          |
| `close()`                       | `void` | 광고 닫기                          |
| `open(_:useInAppBrowser:)`      | `void` | URL 열기 (기본값: `destinationURL`) |

##### show 메서드

```swift theme={null}
func show(fromRootViewController viewController: UIViewController)
```

<ParamField body="viewController" type="UIViewController" required>
  광고를 표시할 기준 뷰 컨트롤러
</ParamField>

#### 속성

| 속성                           | 타입                                          | 설명                                      |
| ---------------------------- | ------------------------------------------- | --------------------------------------- |
| `delegate`                   | `AdropPopupAdDelegate?`                     | 광고 이벤트 Delegate (읽기/쓰기)                 |
| `closeDelegate`              | `AdropPopupAdCloseDelegate?`                | 닫기 이벤트 Delegate (읽기/쓰기)                 |
| `isLoaded`                   | `Bool`                                      | 광고가 로드되었는지 여부 (읽기 전용)                   |
| `unitId`                     | `String`                                    | 유닛 ID (읽기 전용)                           |
| `txId`                       | `String`                                    | 현재 트랜잭션 ID (읽기 전용)                      |
| `txIds`                      | `[String]`                                  | 모든 트랜잭션 ID (읽기 전용)                      |
| `campaignId`                 | `String`                                    | 현재 캠페인 ID (읽기 전용)                       |
| `campaignIds`                | `[String]`                                  | 모든 캠페인 ID (읽기 전용)                       |
| `creativeId`                 | `String?`                                   | 현재 크리에이티브 ID (읽기 전용)                    |
| `creativeIds`                | `[String]`                                  | 모든 크리에이티브 ID (읽기 전용)                    |
| `destinationURL`             | `String?`                                   | 광고 목적지 URL (읽기 전용)                      |
| `useCustomClick`             | `Bool`                                      | 커스텀 클릭 처리 사용 여부 (읽기/쓰기)                 |
| `browserTarget`              | `BrowserTarget?`                            | 광고 클릭 시 URL 열기 방식 (읽기 전용)               |
| `backgroundColor`            | `UIColor?`                                  | 팝업 배경색 (읽기/쓰기)                          |
| `hideForTodayTextColor`      | `UIColor?`                                  | "오늘 하루 보지 않기" 텍스트 색상 (읽기/쓰기)            |
| `closeTextColor`             | `UIColor?`                                  | 닫기 버튼 텍스트 색상 (읽기/쓰기)                    |
| `ctaTextColor`               | `UIColor?`                                  | CTA 텍스트 색상 (읽기/쓰기)                      |
| `onAdReceived`               | `((AdropPopupAd) -> Void)?`                 | Closure callback for ad received        |
| `onAdFailedToReceive`        | `((AdropPopupAd, AdropErrorCode) -> Void)?` | Closure callback for ad failed          |
| `onAdImpression`             | `((AdropPopupAd) -> Void)?`                 | Closure callback for ad impression      |
| `onAdClicked`                | `((AdropPopupAd) -> Void)?`                 | Closure callback for ad clicked         |
| `onAdWillPresentFullScreen`  | `((AdropPopupAd) -> Void)?`                 | Closure callback before presenting      |
| `onAdDidPresentFullScreen`   | `((AdropPopupAd) -> Void)?`                 | Closure callback after presenting       |
| `onAdWillDismissFullScreen`  | `((AdropPopupAd) -> Void)?`                 | Closure callback before dismissing      |
| `onAdDidDismissFullScreen`   | `((AdropPopupAd) -> Void)?`                 | Closure callback after dismissing       |
| `onAdFailedToShowFullScreen` | `((AdropPopupAd, AdropErrorCode) -> Void)?` | Closure callback for show failure       |
| `onAdVideoStart`             | `((AdropPopupAd) -> Void)?`                 | 동영상 재생 시작 시 클로저 콜백                      |
| `onAdVideoEnd`               | `((AdropPopupAd) -> Void)?`                 | 동영상 재생 종료 시 클로저 콜백                      |
| `onClosed`                   | `((AdropPopupAd) -> Void)?`                 | Closure callback for close button       |
| `onDimClicked`               | `((AdropPopupAd) -> Void)?`                 | Closure callback for dim area click     |
| `onTodayOffClicked`          | `((AdropPopupAd) -> Void)?`                 | Closure callback for "Don't show today" |

**사용 예시:**

```swift theme={null}
let popupAd = AdropPopupAd(unitId: "YOUR_UNIT_ID")
popupAd.delegate = self
popupAd.closeDelegate = self
popupAd.load()

// 광고가 로드된 후
if popupAd.isLoaded {
    popupAd.show(fromRootViewController: self)
}
```

***

### AdropSplashAd

스플래시 광고를 관리하는 클래스입니다.

<Note>
  `AdropSplashAd`는 직접 인스턴스화할 수 없습니다 (이니셜라이저가 internal). 스플래시 광고를 표시하려면 `AdropSplashAdViewController` 또는 `AdropSplashAdView`를 사용하세요.
</Note>

#### 속성

| 속성               | 타입                       | 설명                  |
| ---------------- | ------------------------ | ------------------- |
| `delegate`       | `AdropSplashAdDelegate?` | Delegate (읽기/쓰기)    |
| `unitId`         | `String`                 | 유닛 ID (읽기 전용)       |
| `txId`           | `String`                 | 트랜잭션 ID (읽기 전용)     |
| `campaignId`     | `String`                 | 캠페인 ID (읽기 전용)      |
| `creativeId`     | `String`                 | 크리에이티브 ID (읽기 전용)   |
| `destinationURL` | `String`                 | 광고 목적지 URL (읽기 전용)  |
| `readyToShow`    | `Bool`                   | 광고 표시 준비 여부 (읽기 전용) |
| `adImage`        | `UIImage?`               | 캐시된 광고 이미지 (읽기 전용)  |

***

### AdropSplashAdViewController

스플래시 광고를 전체 화면으로 표시하는 뷰 컨트롤러입니다.

#### 초기화

```swift theme={null}
init(unitId: String, adRequestTimeout: TimeInterval = 1)
```

<ParamField body="unitId" type="String" required>
  애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID
</ParamField>

<ParamField body="adRequestTimeout" type="TimeInterval" default="1">
  광고 요청 타임아웃 (초)
</ParamField>

#### 메서드

| 메서드       | 반환 타입  | 설명                                   |
| --------- | ------ | ------------------------------------ |
| `close()` | `void` | 스플래시 광고를 닫고 `mainViewController`로 전환 |

#### 속성

| 속성                   | 타입                       | 설명                                       |
| -------------------- | ------------------------ | ---------------------------------------- |
| `delegate`           | `AdropSplashAdDelegate?` | Delegate (읽기/쓰기)                         |
| `splashAd`           | `AdropSplashAd`          | 기반 스플래시 광고 객체 (읽기 전용)                    |
| `displayDuration`    | `TimeInterval`           | 광고 표시 시간 (기본값: 1초, deprecated — 콘솔에서 설정) |
| `logoImage`          | `UIImage?`               | 하단에 표시할 로고 이미지 (읽기/쓰기)                   |
| `backgroundColor`    | `UIColor?`               | 배경색 (읽기/쓰기)                              |
| `mainViewController` | `UIViewController?`      | 스플래시 광고 종료 후 전환할 메인 뷰 컨트롤러 (읽기/쓰기)       |

**사용 예시:**

```swift theme={null}
let splashVC = AdropSplashAdViewController(unitId: "YOUR_UNIT_ID")
splashVC.delegate = self
splashVC.displayDuration = 3.0  // 3초 동안 표시
splashVC.logoImage = UIImage(named: "app_logo")  // 로고 이미지 설정
splashVC.modalPresentationStyle = .fullScreen
present(splashVC, animated: false)
```

***

### AdropSplashAdView

스플래시 광고를 표시하는 뷰입니다. `UIImageView`를 상속받습니다.

#### 초기화

```swift theme={null}
init(unitId: String, adRequestTimeout: TimeInterval = 1)
```

<ParamField body="unitId" type="String" required>
  애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID
</ParamField>

<ParamField body="adRequestTimeout" type="TimeInterval" default="1">
  광고 요청 타임아웃 (초)
</ParamField>

<Note>
  광고 로드는 초기화 시 자동으로 수행됩니다. `load()`를 직접 호출하지 마세요.
</Note>

#### 속성

| 속성                | 타입                           | 설명                              |
| ----------------- | ---------------------------- | ------------------------------- |
| `delegate`        | `AdropSplashAdViewDelegate?` | Delegate (읽기/쓰기)                |
| `ad`              | `AdropSplashAd`              | 기반 스플래시 광고 객체 (읽기 전용)           |
| `unitId`          | `String`                     | 유닛 ID (읽기 전용)                   |
| `txId`            | `String?`                    | 트랜잭션 ID (읽기 전용)                 |
| `creativeId`      | `String`                     | 크리에이티브 ID (읽기 전용)               |
| `isClosed`        | `Bool`                       | 스플래시 광고 닫힘 여부 (읽기 전용)           |
| `displayDuration` | `TimeInterval`               | 광고 표시 시간 (deprecated — 콘솔에서 설정) |

***

### AdropMetrics

사용자 속성 및 이벤트를 관리하는 클래스입니다.

#### 정적 속성

| 속성                | 타입     | 설명                                 |
| ----------------- | ------ | ---------------------------------- |
| `userDataConsent` | `Bool` | 사용자 데이터 동의 상태 (기본값: `true`, 읽기 전용) |

#### 정적 메서드

| 메서드                       | 반환 타입                 | 설명                                                                                        |
| ------------------------- | --------------------- | ----------------------------------------------------------------------------------------- |
| `setUserDataConsent(_:)`  | `void`                | 사용자 데이터 수집 동의 상태 설정 (`true` = 동의, `false` = 비동의). `false`일 경우 데이터가 로컬에 저장되지만 서버로 전송되지 않음. |
| `setProperty(key:value:)` | `void`                | 사용자 속성 설정                                                                                 |
| `properties()`            | `[String: Encodable]` | 저장된 사용자 속성 전체 조회                                                                          |
| `sendEvent(name:params:)` | `void`                | 사용자 이벤트 전송                                                                                |
| `logEvent(name:params:)`  | `void`                | **Deprecated.** `sendEvent`를 사용하세요.                                                       |

#### 사용자 속성 설정

```swift theme={null}
static func setProperty(key: String, value: Encodable?)
```

<ParamField body="key" type="String" required>
  속성 키 (최대 64자)
</ParamField>

<ParamField body="value" type="Any" required>
  속성 값 (String, Int, Double, Bool 지원)
</ParamField>

**사용 예시:**

```swift theme={null}
AdropMetrics.setProperty(key: "age", value: 25)
AdropMetrics.setProperty(key: "gender", value: "male")
AdropMetrics.setProperty(key: "isPremium", value: true)
```

#### 사용자 속성 조회

```swift theme={null}
static func properties() -> [String: Encodable]
```

`setProperty(key:value:)`로 저장한 사용자 속성 전체를 반환합니다.

**사용 예시:**

```swift theme={null}
let stored = AdropMetrics.properties()
print(stored)
```

#### 이벤트 전송

```swift theme={null}
static func sendEvent(name: String, params: [String: Any]? = nil)
```

<ParamField body="name" type="String" required>
  이벤트 이름 (1–64자)
</ParamField>

<ParamField body="params" type="[String: Any]?" optional>
  이벤트 파라미터 딕셔너리. 키는 최대 64자, 문자열 값은 최대 1024자입니다.
</ParamField>

**사용 예시:**

```swift theme={null}
// 단순 이벤트
AdropMetrics.sendEvent(name: "app_open")

// 파라미터가 있는 이벤트
AdropMetrics.sendEvent(name: "view_item", params: [
    "item_id": "SKU-123",
    "item_name": "Widget",
    "price": 29.99
])

// 다중 아이템 이벤트 (구매)
AdropMetrics.sendEvent(name: "purchase", params: [
    "tx_id": "tx_123",
    "currency": "KRW",
    "items": [
        ["item_id": "A", "item_name": "Product A", "price": 100, "quantity": 1],
        ["item_id": "B", "item_name": "Product B", "price": 200, "quantity": 2]
    ]
])
```

<Warning>
  `logEvent()`는 deprecated되었으며 향후 버전에서 제거됩니다. `sendEvent()`를 사용하세요.
</Warning>

<Note>
  * 이벤트 이름은 1–64자여야 합니다.
  * 동일한 이름과 파라미터를 가진 중복 이벤트는 500ms 이내 전송이 제한됩니다.
  * `sendEvent()`를 호출하기 전에 SDK가 초기화되어 있어야 합니다.
</Note>

#### 이벤트 로깅 (Deprecated)

```swift theme={null}
@available(*, deprecated, renamed: "sendEvent(name:params:)")
static func logEvent(name: String, params: [String: Encodable]? = [:])
```

<Warning>
  이 메서드는 deprecated되었습니다. `sendEvent(name:params:)`를 사용하세요.
</Warning>

***

## 프로토콜 (Delegates)

### AdropBannerDelegate

배너 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

#### 필수 메서드

```swift theme={null}
func onAdReceived(_ banner: AdropBanner)
```

광고 수신이 성공했을 때 호출됩니다.

```swift theme={null}
func onAdFailedToReceive(_ banner: AdropBanner, _ errorCode: AdropErrorCode)
```

광고 수신이 실패했을 때 호출됩니다.

#### 선택 메서드

```swift theme={null}
optional func onAdImpression(_ banner: AdropBanner)
```

광고가 화면에 노출되었을 때 호출됩니다.

```swift theme={null}
optional func onAdClicked(_ banner: AdropBanner)
```

사용자가 광고를 클릭했을 때 호출됩니다.

```swift theme={null}
optional func onAdsReceived(_ banners: [AdropBanner])
```

`AdropBanner.loads(...)`로 요청한 배너 배치가 전달됐을 때 호출됩니다.

```swift theme={null}
optional func onAdsFailedToReceive(_ errorCode: AdropErrorCode)
```

`AdropBanner.loads(...)`의 배치 로드가 실패했을 때 호출됩니다.

**구현 예시:**

```swift theme={null}
extension ViewController: AdropBannerDelegate {
    func onAdReceived(_ banner: AdropBanner) {
        print("배너 광고 수신")
    }

    func onAdFailedToReceive(_ banner: AdropBanner, _ errorCode: AdropErrorCode) {
        print("배너 광고 실패: \(errorCode)")
    }

    func onAdImpression(_ banner: AdropBanner) {
        print("배너 광고 노출")
    }

    func onAdClicked(_ banner: AdropBanner) {
        print("배너 광고 클릭")
    }
}
```

***

### AdropNativeAdDelegate

네이티브 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

#### 필수 메서드

```swift theme={null}
func onAdReceived(_ ad: AdropNativeAd)
```

광고 수신이 성공했을 때 호출됩니다.

```swift theme={null}
func onAdFailedToReceive(_ ad: AdropNativeAd, _ errorCode: AdropErrorCode)
```

광고 수신이 실패했을 때 호출됩니다.

#### 선택 메서드

```swift theme={null}
optional func onAdImpression(_ ad: AdropNativeAd)
```

광고가 화면에 노출되었을 때 호출됩니다.

```swift theme={null}
optional func onAdClicked(_ ad: AdropNativeAd)
```

사용자가 광고를 클릭했을 때 호출됩니다.

```swift theme={null}
optional func onAdsReceived(_ ads: [AdropNativeAd])
```

`AdropNativeAd.loads(...)`로 요청한 네이티브 배치가 전달됐을 때 호출됩니다.

```swift theme={null}
optional func onAdsFailedToReceive(_ errorCode: AdropErrorCode)
```

`AdropNativeAd.loads(...)`의 배치 로드가 실패했을 때 호출됩니다.

***

### AdropInterstitialAdDelegate

전면 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

#### 필수 메서드

```swift theme={null}
func onAdReceived(_ ad: AdropInterstitialAd)
```

광고 수신이 성공했을 때 호출됩니다.

```swift theme={null}
func onAdFailedToReceive(_ ad: AdropInterstitialAd, _ errorCode: AdropErrorCode)
```

광고 수신이 실패했을 때 호출됩니다.

#### 선택 메서드

```swift theme={null}
optional func onAdImpression(_ ad: AdropInterstitialAd)
```

광고가 화면에 노출되었을 때 호출됩니다.

```swift theme={null}
optional func onAdClicked(_ ad: AdropInterstitialAd)
```

사용자가 광고를 클릭했을 때 호출됩니다.

```swift theme={null}
optional func onAdWillPresentFullScreen(_ ad: AdropInterstitialAd)
```

광고가 전체 화면으로 표시되기 직전에 호출됩니다.

```swift theme={null}
optional func onAdDidPresentFullScreen(_ ad: AdropInterstitialAd)
```

광고가 전체 화면으로 표시된 직후에 호출됩니다.

```swift theme={null}
optional func onAdWillDismissFullScreen(_ ad: AdropInterstitialAd)
```

광고가 닫히기 직전에 호출됩니다.

```swift theme={null}
optional func onAdDidDismissFullScreen(_ ad: AdropInterstitialAd)
```

광고가 닫혔을 때 호출됩니다.

```swift theme={null}
optional func onAdFailedToShowFullScreen(_ ad: AdropInterstitialAd, _ errorCode: AdropErrorCode)
```

광고 표시가 실패했을 때 호출됩니다.

***

### AdropRewardedAdDelegate

보상형 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

#### 필수 메서드

```swift theme={null}
func onAdReceived(_ ad: AdropRewardedAd)
```

광고 수신이 성공했을 때 호출됩니다.

```swift theme={null}
func onAdFailedToReceive(_ ad: AdropRewardedAd, _ errorCode: AdropErrorCode)
```

광고 수신이 실패했을 때 호출됩니다.

#### 선택 메서드

```swift theme={null}
optional func onAdImpression(_ ad: AdropRewardedAd)
```

광고가 화면에 노출되었을 때 호출됩니다.

```swift theme={null}
optional func onAdClicked(_ ad: AdropRewardedAd)
```

사용자가 광고를 클릭했을 때 호출됩니다.

```swift theme={null}
optional func onAdWillPresentFullScreen(_ ad: AdropRewardedAd)
```

광고가 전체 화면으로 표시되기 직전에 호출됩니다.

```swift theme={null}
optional func onAdDidPresentFullScreen(_ ad: AdropRewardedAd)
```

광고가 전체 화면으로 표시된 직후에 호출됩니다.

```swift theme={null}
optional func onAdWillDismissFullScreen(_ ad: AdropRewardedAd)
```

광고가 닫히기 직전에 호출됩니다.

```swift theme={null}
optional func onAdDidDismissFullScreen(_ ad: AdropRewardedAd)
```

광고가 닫혔을 때 호출됩니다.

```swift theme={null}
optional func onAdFailedToShowFullScreen(_ ad: AdropRewardedAd, _ errorCode: AdropErrorCode)
```

광고 표시가 실패했을 때 호출됩니다.

***

### AdropPopupAdDelegate

팝업 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

#### 필수 메서드

```swift theme={null}
func onAdReceived(_ ad: AdropPopupAd)
```

광고 수신이 성공했을 때 호출됩니다.

```swift theme={null}
func onAdFailedToReceive(_ ad: AdropPopupAd, _ errorCode: AdropErrorCode)
```

광고 수신이 실패했을 때 호출됩니다.

#### 선택 메서드

```swift theme={null}
optional func onAdImpression(_ ad: AdropPopupAd)
```

광고가 화면에 노출되었을 때 호출됩니다.

```swift theme={null}
optional func onAdClicked(_ ad: AdropPopupAd)
```

사용자가 광고를 클릭했을 때 호출됩니다.

```swift theme={null}
optional func onAdWillPresentFullScreen(_ ad: AdropPopupAd)
```

팝업 광고가 표시되기 직전에 호출됩니다.

```swift theme={null}
optional func onAdDidPresentFullScreen(_ ad: AdropPopupAd)
```

팝업 광고가 표시된 직후에 호출됩니다.

```swift theme={null}
optional func onAdWillDismissFullScreen(_ ad: AdropPopupAd)
```

팝업 광고가 닫히기 직전에 호출됩니다.

```swift theme={null}
optional func onAdDidDismissFullScreen(_ ad: AdropPopupAd)
```

광고가 닫혔을 때 호출됩니다.

```swift theme={null}
optional func onAdFailedToShowFullScreen(_ ad: AdropPopupAd, _ errorCode: AdropErrorCode)
```

광고 표시가 실패했을 때 호출됩니다.

***

### AdropPopupAdCloseDelegate

팝업 광고의 닫기 관련 이벤트를 처리하는 프로토콜입니다.

#### 선택 메서드

```swift theme={null}
optional func onClosed(_ ad: AdropPopupAd)
```

사용자가 닫기 버튼을 클릭했을 때 호출됩니다.

```swift theme={null}
optional func onDimClicked(_ ad: AdropPopupAd)
```

사용자가 팝업 외부 영역(딤 영역)을 클릭했을 때 호출됩니다.

```swift theme={null}
optional func onTodayOffClicked(_ ad: AdropPopupAd)
```

사용자가 "오늘 하루 보지 않기"를 선택했을 때 호출됩니다.

***

### AdropSplashAdDelegate

스플래시 광고의 생명주기 이벤트를 처리하는 프로토콜입니다. 모든 메서드는 `@objc optional`입니다.

#### 선택 메서드

```swift theme={null}
optional func onAdReceived(_ ad: AdropSplashAd)
```

광고 수신이 성공했을 때 호출됩니다.

```swift theme={null}
optional func onAdFailedToReceive(_ ad: AdropSplashAd, _ errorCode: AdropErrorCode)
```

광고 수신이 실패했을 때 호출됩니다.

```swift theme={null}
optional func onAdImpression(_ ad: AdropSplashAd)
```

광고가 화면에 노출되었을 때 호출됩니다.

```swift theme={null}
optional func onAdClose(_ ad: AdropSplashAd, impressed: Bool)
```

스플래시 광고가 닫혔을 때 호출됩니다. `impressed`는 광고가 완전히 표시되었는지를 나타냅니다.

***

### AdropSplashAdViewDelegate

스플래시 광고 뷰의 생명주기 이벤트를 처리하는 프로토콜입니다.

#### 필수 메서드

```swift theme={null}
func onAdClose(_ adView: AdropSplashAdView, impressed: Bool)
```

스플래시 광고 뷰가 닫혔을 때 호출됩니다. `impressed`는 광고가 완전히 표시되었는지를 나타냅니다.

#### 선택 메서드

```swift theme={null}
optional func onAdReceived(_ adView: AdropSplashAdView)
```

광고 수신이 성공했을 때 호출됩니다.

```swift theme={null}
optional func onAdFailedToReceive(_ adView: AdropSplashAdView, _ errorCode: AdropErrorCode)
```

광고 수신이 실패했을 때 호출됩니다.

```swift theme={null}
optional func onAdImpression(_ adView: AdropSplashAdView)
```

광고가 화면에 노출되었을 때 호출됩니다.

***

### UseCustomClick

광고 클릭 동작을 커스터마이징하기 위한 프로토콜입니다. `AdropBanner`, `AdropNativeAd`, `AdropPopupAd`에서 구현됩니다.

| 프로퍼티 / 메서드                 | 타입        | 설명                                                       |
| -------------------------- | --------- | -------------------------------------------------------- |
| `destinationURL`           | `String?` | 광고의 목적지 URL (읽기 전용)                                      |
| `useCustomClick`           | `Bool`    | `true`로 설정하면 광고 클릭 시 자동 URL 열기가 비활성화됩니다                  |
| `open(_:useInAppBrowser:)` | 메서드       | URL을 수동으로 엽니다. `useCustomClick`이 `true`일 때 클릭 콜백에서 호출하세요 |

***

## 열거형 (Enums)

### AdropErrorCode

광고 로드 및 표시 중 발생할 수 있는 에러 코드입니다.

```swift theme={null}
enum AdropErrorCode: Int
```

| 케이스                                       | 코드 값 | 설명              |
| ----------------------------------------- | ---- | --------------- |
| `ERROR_CODE_NETWORK`                      | 0    | 네트워크 오류         |
| `ERROR_CODE_INTERNAL`                     | 1    | 내부 오류           |
| `ERROR_CODE_INITIALIZE`                   | 2    | SDK 초기화 실패      |
| `ERROR_CODE_INVALID_UNIT`                 | 3    | 잘못된 유닛 ID       |
| `ERROR_CODE_NOT_TARGET_COUNTRY`           | 4    | 타겟 국가가 아님       |
| `ERROR_CODE_AD_INACTIVE`                  | 5    | 활성 캠페인 없음       |
| `ERROR_CODE_AD_NO_FILL`                   | 6    | 노출 가능한 광고 없음    |
| `ERROR_CODE_AD_LOAD_DUPLICATED`           | 7    | 중복된 광고 로드 요청    |
| `ERROR_CODE_AD_LOADING`                   | 8    | 광고 로딩 중         |
| `ERROR_CODE_AD_EMPTY`                     | 9    | 광고가 로드되지 않음     |
| `ERROR_CODE_AD_SHOWN`                     | 10   | 광고가 이미 표시됨      |
| `ERROR_CODE_AD_HIDE_FOR_TODAY`            | 11   | 오늘 하루 보지 않기 설정됨 |
| `ERROR_CODE_ACCOUNT_USAGE_LIMIT_EXCEEDED` | 12   | 계정 사용량 한도 초과    |
| `ERROR_CODE_LANDSCAPE_UNSUPPORTED`        | 13   | 가로 모드 미지원       |
| `ERROR_CODE_AD_BACKFILL_NO_FILL`          | 14   | 백필 광고 없음        |

#### 에러 코드별 설명

**네트워크 관련**

* `ERROR_CODE_NETWORK`: 네트워크 연결 오류가 발생했습니다. 인터넷 연결을 확인하세요.

**초기화 관련**

* `ERROR_CODE_INITIALIZE`: SDK가 초기화되지 않았습니다. `Adrop.initialize()`를 먼저 호출하세요.

**유닛 관련**

* `ERROR_CODE_INVALID_UNIT`: 잘못된 유닛 ID입니다. 콘솔에서 확인하세요.
* `ERROR_CODE_NOT_TARGET_COUNTRY`: 현재 사용자의 국가가 타겟 국가가 아닙니다.

**광고 관련**

* `ERROR_CODE_AD_INACTIVE`: 해당 유닛에 활성화된 캠페인이 없습니다.
* `ERROR_CODE_AD_NO_FILL`: 현재 노출 가능한 광고가 없습니다.
* `ERROR_CODE_AD_BACKFILL_NO_FILL`: 백필 광고도 없습니다.

**광고 상태 관련**

* `ERROR_CODE_AD_LOAD_DUPLICATED`: 이미 광고를 로드하는 중입니다.
* `ERROR_CODE_AD_LOADING`: 광고가 아직 로딩 중입니다.
* `ERROR_CODE_AD_EMPTY`: 광고를 표시하기 전에 로드해야 합니다.
* `ERROR_CODE_AD_SHOWN`: 광고가 이미 표시되었습니다. 새로운 광고를 로드하세요.
* `ERROR_CODE_AD_HIDE_FOR_TODAY`: 사용자가 "오늘 하루 보지 않기"를 선택했습니다.

**기타**

* `ERROR_CODE_INTERNAL`: 내부 오류가 발생했습니다.
* `ERROR_CODE_ACCOUNT_USAGE_LIMIT_EXCEEDED`: 계정의 광고 사용량 한도를 초과했습니다.
* `ERROR_CODE_LANDSCAPE_UNSUPPORTED`: 해당 광고는 가로 모드를 지원하지 않습니다.

**사용 예시:**

```swift theme={null}
func onAdFailedToReceive(_ banner: AdropBanner, _ errorCode: AdropErrorCode) {
    switch errorCode {
    case .ERROR_CODE_NETWORK:
        print("네트워크 오류: 연결을 확인하세요")
    case .ERROR_CODE_AD_NO_FILL:
        print("노출 가능한 광고가 없습니다")
    case .ERROR_CODE_INVALID_UNIT:
        print("잘못된 유닛 ID입니다")
    default:
        print("광고 로드 실패: \(errorCode.rawValue)")
    }
}
```

***

### AdropTheme

앱의 테마 설정을 나타내는 열거형입니다.

```swift theme={null}
enum AdropTheme
```

| 케이스     | 설명               |
| ------- | ---------------- |
| `light` | 라이트 모드           |
| `dark`  | 다크 모드            |
| `auto`  | 시스템 설정 따르기 (기본값) |

**사용 예시:**

```swift theme={null}
// 라이트 모드 설정
Adrop.setTheme(.light)

// 다크 모드 설정
Adrop.setTheme(.dark)

// 시스템 설정 따르기
Adrop.setTheme(.auto)
```

***

### BrowserTarget

광고 URL의 열기 방식을 제어합니다.

| 값          | 설명                          |
| ---------- | --------------------------- |
| `EXTERNAL` | 기본 외부 브라우저에서 URL을 엽니다 (기본값) |
| `INTERNAL` | 인앱 브라우저에서 URL을 엽니다          |

***

## 구조체 및 타입

### AdropNativeAdProfile

광고주의 프로필 정보를 담는 구조체입니다.

```swift theme={null}
struct AdropNativeAdProfile {
    let displayLogo: String     // 광고주 로고 URL
    let displayName: String     // 광고주 이름
    let link: String?           // 광고주 프로필 링크
}
```

**사용 예시:**

```swift theme={null}
let profile = nativeAd.profile
profileNameLabel.text = profile.displayName
loadImage(from: profile.displayLogo, into: profileImageView)
```

### AdropServerSideVerificationOptions

보상형 광고의 서버 사이드 검증 옵션을 설정하는 클래스입니다.

```swift theme={null}
class AdropServerSideVerificationOptions: NSObject {
    var userId: String?
    var customData: String?

    init(userId: String? = nil, customData: String? = nil)
}
```

| 속성           | 타입        | 설명                     |
| ------------ | --------- | ---------------------- |
| `userId`     | `String?` | 서버 사이드 검증을 위한 사용자 식별자  |
| `customData` | `String?` | 서버 콜백에 포함할 커스텀 데이터 문자열 |

**사용 예시:**

```swift theme={null}
let options = AdropServerSideVerificationOptions(
    userId: "user_12345",
    customData: "level_5_reward"
)
rewardedAd.serverSideVerificationOptions = options
```

***

## 상수

### AdropUnitId

테스트용 유닛 ID 상수입니다.

```swift theme={null}
struct AdropUnitId {
    // 배너 광고
    static let PUBLIC_TEST_UNIT_ID_320_50: String
    static let PUBLIC_TEST_UNIT_ID_320_100: String
    static let PUBLIC_TEST_UNIT_ID_CAROUSEL: String
    static let PUBLIC_TEST_UNIT_ID_BANNER_VIDEO_16_9: String
    static let PUBLIC_TEST_UNIT_ID_BANNER_VIDEO_9_16: String

    // 네이티브 광고
    static let PUBLIC_TEST_UNIT_ID_NATIVE: String
    static let PUBLIC_TEST_UNIT_ID_NATIVE_VIDEO_16_9: String
    static let PUBLIC_TEST_UNIT_ID_NATIVE_VIDEO_9_16: String

    // 전면 광고
    static let PUBLIC_TEST_UNIT_ID_INTERSTITIAL: String

    // 보상형 광고
    static let PUBLIC_TEST_UNIT_ID_REWARDED: String

    // 팝업 광고
    static let PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_CENTER: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM_VIDEO_16_9: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM_VIDEO_9_16: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_CENTER_VIDEO_16_9: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_CENTER_VIDEO_9_16: String

    // 스플래시 광고
    static let PUBLIC_TEST_UNIT_ID_SPLASH: String
}
```

**사용 예시:**

```swift theme={null}
let banner = AdropBanner(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_320_100)
let carouselBanner = AdropBanner(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_CAROUSEL)
let nativeAd = AdropNativeAd(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_NATIVE)
let interstitial = AdropInterstitialAd(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_INTERSTITIAL)
let popup = AdropPopupAd(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_POPUP_CENTER)
```

<Warning>
  테스트 유닛 ID는 개발 환경에서만 사용하세요. 프로덕션에서는 반드시 콘솔에서 생성한 실제 유닛 ID를 사용해야 합니다.
</Warning>

***

## 추가 리소스

<CardGroup cols={2}>
  <Card title="배너 광고" href="/ko/sdk/ios/banner" icon="rectangle-ad">
    배너 광고 구현 가이드
  </Card>

  <Card title="네이티브 광고" href="/ko/sdk/ios/native" icon="grid-2">
    네이티브 광고 구현 가이드
  </Card>

  <Card title="전면 광고" href="/ko/sdk/ios/interstitial" icon="window-maximize">
    전면 광고 구현 가이드
  </Card>

  <Card title="보상형 광고" href="/ko/sdk/ios/rewarded" icon="gift">
    보상형 광고 구현 가이드
  </Card>
</CardGroup>
