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

# 마이그레이션 가이드

> 2.0.0 미만의 레거시 iOS SDK에서 DARO 2.0.1 SDK로 전환하는 순서를 안내합니다.

[공통 마이그레이션 안내](/ko/new-daro-sdk/migration-guide)를 확인한 뒤 아래 순서대로 진행하세요.

<Note>
  기존 애드유닛 ID는 DARO 2.0.1 SDK에서도 계속 사용할 수 있으며 다시 발급할 필요가 없습니다. 새로 연동하거나 값을 복사할 때는 업데이트된 대시보드의 Ad Unit Key를 사용하세요. 2.0.0 미만의 레거시 SDK를 사용하는 앱 버전에는 기존 애드유닛 ID를 유지하고, 새로 생성한 애드유닛의 키를 전달하지 마세요. 지원 범위는 [2.0.0 미만의 레거시 SDK 지원 안내](/ko/new-daro-sdk/legacy-support)를 참고하세요.
</Note>

## 1. 대시보드 업데이트

* DARO 대시보드에서 전환할 앱을 확인하고 업데이트를 완료하세요.
* 해당 앱의 **Integration Key**와 Ad Unit Key를 확인하세요.

## 2. 기존 키 파일과 설정 제거

* 프로젝트에서 `ios-daro-key.txt`와 해당 파일의 타겟 연결, **Copy Bundle Resources** 항목을 제거하세요.

* 파일을 읽거나 복사하던 기존 빌드 스크립트도 제거하세요.

* 기존 DARO 연동을 위해 직접 입력한 앱 키 설정과 이전 키 주입 단계를 제거하세요.

* 새로운 Integration Key 설정 도구가 필요한 설정을 다시 적용하므로 이전 값을 수동으로 덮어쓰지 마세요.

## 3. DARO 연동 도구 설정

* [시작하기](/ko/sdk-integration-v2/ios_new/get-started#sdk-설치하기)에서 사용하는 설치 방식을 선택하세요.

* **CocoaPods:** Podfile의 의존성을 변경하고 Integration Key용 `post_install` 훅을 추가하세요. 기존 훅이 있으면 같은 블록 안에 추가하세요.

* **SPM:** 패키지를 업데이트하고 같은 버전의 SDK ZIP에서 `Scripts/daro` 도구를 준비하세요.

* CocoaPods는 2.0.0 미만에서 사용하던 pod을 Podfile에서 제거한 뒤 DARO 2.0.1 SDK를 추가하세요.

* Swift 앱은 `DaroAds`, Objective-C 앱은 `DaroObjCBridge`이며, `DaroM` 계열을 사용하던 앱도 같은 pod으로 이동합니다.

* 버전은 [시작하기](/ko/sdk-integration-v2/ios_new/get-started#sdk-설치하기)에 안내된 값을 사용하세요.

```ruby theme={null}
# 제거 — 사용하던 줄만 해당합니다
pod 'DaroAds', '1.x.x'
pod 'DaroObjCBridge', '1.x.x'
pod 'DaroMAds', '1.x.x'
pod 'DaroMObjCBridge', '1.x.x'
```

<Warning>
  * Objective-C 앱과 SPM으로 설치하는 Swift 앱은 앱 타겟의 **Build Settings > Other Linker Flags (`OTHER_LDFLAGS`)** 에 `-ObjC`를 추가해야 합니다.
  * 플래그가 없으면 SDK가 정상 동작하지 않거나 일부 광고 디맨드가 로드되지 않습니다.
  * 자세한 내용은 [시작하기의 Other Linker Flags 설정](/ko/sdk-integration-v2/ios_new/get-started#other-linker-flags-설정)을 확인하세요.
</Warning>

## 4. Integration Key 및 앱 설정

* 앱 타겟이 사용하는 소스 `Info.plist`에 대시보드에서 발급한 키를 넣으세요.

```xml theme={null}
<key>DaroIntegrationKey</key>
<string>YOUR_INTEGRATION_KEY</string>
```

* CocoaPods는 `pod install --repo-update`를 실행하세요.
* SPM은 다운로드한 도구로 소스 파일에 설정을 적용하세요.

```bash theme={null}
./Scripts/daro platform-key --plist "/path/to/YourApp/Info.plist" --inject
```

* Debug와 Release가 서로 다른 Info.plist를 사용한다면 각 파일에 설정을 적용하세요.
* 자세한 절차는 [시작하기](/ko/sdk-integration-v2/ios_new/get-started)를 따르세요.

### SKAdNetworkItems 갱신

* DARO 2.0.1 SDK는 지원하는 광고 디맨드 구성이 2.0.0 미만과 다릅니다.

* 앱 `Info.plist`의 기존 `SKAdNetworkItems` 배열을 [시작하기의 앱 설정하기](/ko/sdk-integration-v2/ios_new/get-started#앱-설정하기)에 있는 목록으로 교체하세요.

* 목록에 없는 디맨드는 SKAdNetwork 어트리뷰션을 받지 못합니다.

* 다른 SDK가 추가한 항목은 그대로 두고, 같은 `SKAdNetworkIdentifier`가 중복되면 하나만 남기세요.

## 5. app-ads.txt 업데이트

* [app-ads.txt 설정 가이드](/ko/app-ads-txt-settings)에 따라 대시보드에서 제공하는 최신 내용을 게시하세요.
* 대시보드에 등록한 웹사이트에서 파일에 접근할 수 있는지 확인하세요.

## 6. SDK 의존성과 코드 변경

### 모듈과 초기화

* 2.0.0 미만의 레거시 SDK 의존성과 import를 제거하고 새 SDK만 사용하세요.
* Swift의 모듈 이름은 `Daro`이며 초기화 진입점은 `DaroAds.shared`입니다.

```swift theme={null}
import Daro

DaroAds.shared.initialized { error in
    guard error == nil else {
        print("DARO initialization failed: \(String(describing: error))")
        return
    }
    // 이 콜백에서 초기화 성공을 확인한 뒤 광고를 로드하세요.
}
```

* Objective-C 앱은 `DaroObjCBridge`를 설치하고 다음 초기화 API를 사용하세요.

```objc theme={null}
#import <DaroObjCBridge/DaroObjCBridge.h>
#import <DaroObjCBridge/DaroObjCBridge-Swift.h>

[[DaroObjCAds shared] initializeWithCompletion:^(NSError * _Nullable error) {
    if (error) {
        NSLog(@"DARO initialization failed: %@", error.localizedDescription);
        return;
    }
    // 초기화 성공 후 광고를 로드하세요.
}];
```

### 애드유닛과 콜백

* Swift 애드유닛은 `DaroAdUnit(unitId:)`로 생성하세요. 기존 `placement` 인자는 제거하세요.
* 리워드 비디오 광고의 `setPlacement(_:)` 및 Objective-C `setPlacement:` 호출은 제거하세요.
* 광고 수익 콜백 `onPaidEvent`는 광고 인스턴스에 등록하세요.
* 레거시 수익 플러그인(`DaroRevenuePlugin.xcframework`의 `DaroPluginAdRevenue`)과 `registerPlugin(_:)` 호출은 DARO 2.0.1 SDK에 없습니다. 프로젝트에서 해당 xcframework를 제거하고 수익 지표는 `onPaidEvent`로 받으세요.
* 개인정보 보호 설정은 [개인 정보 보호 관리](/ko/sdk-integration-v2/ios_new/control-privacy)의 API로 적용하세요.

```swift theme={null}
// 기존 (2.0.0 미만)
let unit = DaroAdUnit(unitId: "AD_UNIT_ID", placement: "PLACEMENT")
rewardedAd.setPlacement("PLACEMENT")
loader.registerPlugin(DaroPluginAdRevenue())

// DARO 2.0.1 SDK
let unit = DaroAdUnit(unitId: "AD_UNIT_ID")
rewardedAd.onPaidEvent = { revenue in
    print(revenue.valueMicros, revenue.currencyCode)
}
```

* 배너·네이티브는 자동 로드 시점에도 SDK 초기화가 완료되어 있어야 합니다.
* 화면을 먼저 생성해야 한다면 `autoLoad: false`로 생성하고 초기화 성공 후 `loadAd()`를 호출하세요.

### 광고 포맷별 확인

* 아래 가이드에 맞춰 앱에서 사용하는 포맷의 로드, 표시, 닫힘, 수익 콜백을 확인하세요.

* 리워드 비디오 광고는 보상 지급도 확인하세요.

* [배너 및 MREC](/ko/sdk-integration-v2/ios_new/ad-formats/bannerAndMREC)

* [네이티브](/ko/sdk-integration-v2/ios_new/ad-formats/native)

* [인터스티셜](/ko/sdk-integration-v2/ios_new/ad-formats/interstitial)

* [리워드 비디오 광고](/ko/sdk-integration-v2/ios_new/ad-formats/rewarded)

* [앱 오프닝](/ko/sdk-integration-v2/ios_new/ad-formats/appopen)

* [라이트 팝업](/ko/sdk-integration-v2/ios_new/ad-formats/lightpopup)

## 배포 전 확인

* 업데이트한 앱에서 초기화와 사용 중인 모든 광고 포맷의 로드·표시·종료를 확인하세요.
* 리워드 비디오 광고의 보상 콜백과 서버 콜백을 사용한다면 함께 확인하세요.
* `Info.plist`의 Integration Key와 `SKAdNetworkItems`가 최신 값으로 반영되었는지 확인하세요.
* 2.0.0 미만의 레거시 SDK를 사용하는 배포 버전에는 기존 Ad Unit ID를 유지하세요.
