# 오퍼월 마이그레이션 가이드

> 오퍼월 마이그레이션 가이드를 따라 아이언소스 탭조이로 전환합니다.

1. Unity Offerwal 어댑터를 연동합니다. 아이언소스 미디테이션 관리자 창을 사용하여 프로젝트에 추가할 수 있습니다.

2. 오퍼월 Unity 플러그인을 추가합니다. 이를 통해 C# 코드에서 오퍼월 SDK 메서드에 접근할 수 있습니다.

탭조이 유니티 플러그인은 외부 종속성 관리자를 사용하여 오퍼월 iOS SDK 사본을 설치하며, 탭조이 Android SDK 사본을 포함합니다. 1단계에서 어댑터를 사용하여 SDK를 이미 추가했으므로, 두 번째 복사본을 포함하지 않으려 합니다(브릿징 코드만 원합니다). */Assets/탭조이/Editor* 디렉토리 내 `TJPluginDependencies` 파일을 수정하여 iOS 참조를 제거하고 Android Unity Bridge만 포함하도록 합니다. 파일의 콘텐츠를 다음으로 변경합니다.

```xml
<dependencies>
<androidPackages>
    <repositories>
      <repository> https://sdk.tapjoy.com</repository>
    </repositories>
    <androidPackage spec="com.tapjoy:tapjoy-android-unitybridge:12.11.1@aar"/>
  </androidPackages>
</dependencies>
```

3. 오퍼월 SDK 함수를 직접 호출합니다. 탭조이 오퍼월을 표시하는 데 필요한 작업입니다. 먼저 탭조이를 다음 클래스로 임포트해야 합니다.

```csharp
import TapjoyUnity
```

4. 오퍼월 SDK를 초기화합니다. 성공하거나 실패하면 콜백이 수신되며, 성공 콜백을 수신하기 전까지 오퍼월 SDK 호출은 수행할 필요가 없습니다.

```csharp
#if UNITY_ANDROID
  Tapjoy.Connect("your_android_sdk_key");
#elif UNITY_IOS
  Tapjoy.Connect("your_ios_sdk_key");
#endif
```

5. 플레이스먼트 오브젝트와 리스너를 생성합니다(리스너에 대한 자세한 내용은 5단계 참고). 플레이스먼트는 오퍼월 대시보드에서 설정할 수 있으며, 여기에는 오퍼월 콘텐츠 카드가 포함됩니다. 이 예시에서는 플레이스먼트의 이름을 **오퍼월**이라고 가정합니다. 실제로는 원하는 대로 이름을 지정할 수 있지만 코드에서 사용하는 이름은 대시보드와 일치해야 합니다.

```csharp
TJPlacement placement = TJPlacement.CreatePlacement("Offerwall");
```

6. 플레이스먼트를 요청합니다. 이 호출로 플레이스먼트를 로드하여 사용자가 표시하기로 선택했을 때 준비되도록 합니다. 오퍼월 플레이스먼트는 빠르게 로드되어야 하지만, 오퍼월을 표시할 때보다 사전에 호출하는 것이 좋습니다.

```csharp
placement.requestContent();
```

7. 구현할 수 있는 다양한 콜백을 제공합니다.

```csharp
TJPlacement.OnRequestSuccess += HandlePlacementRequestSuccess;
TJPlacement.OnRequestFailure += HandlePlacementRequestFailure;
TJPlacement.OnContentReady += HandlePlacementContentReady;
TJPlacement.OnContentShow += HandlePlacementContentShow;
TJPlacement.OnContentDismiss += HandlePlacementContentDismiss;
```

이 중 일부는 이미 구현한 아이언소스 콜백을 대체할 수 있습니다. 아래 표에서 해당 콜백을 참조하여 커스텀 로직을 적절한 Tapjoy 콜백으로 쉽게 이전할 수 있도록 아래 표에서 해당 콜백을 확인할 수 있습니다.

| 아이언소스 콜백                  | 탭조이 콜백           |
| ------------------------- | ---------------- |
| onOfferwallClosedEvent    | OnContentDismiss |
| onOfferwallOpenedEvent    | OnContentShow    |
| onOfferwallAvailableEvent | OnContentReady   |

콘텐츠 요청이 탭조이의 서버에서 반환되면 `OnRequestSuccess`가 호출됩니다. 콘텐츠(오퍼월)가 표시될 준비가 되면 `OnContentReady`가 호출됩니다. 이 시점에서 오퍼월을 표시하거나 필요 시 표시할 준비가 되도록 몇 가지 플래그를 설정할 수 있습니다.

8. 오퍼월 플레이스먼트를 표시하려면 콘텐츠가 준비되었는지 확인한 다음 `showContent`를 호출합니다.

```csharp
if (placement.IsContentReady()) {
  placement.ShowContent();
}
```

기존 아이언소스 호출을 대체합니다.

```csharp
IronSource.Agent.showOfferwall();
```

9. 사용자가 오퍼월을 닫으면 콘텐츠를 다시 요청해야 합니다. 여러 번 플레이스먼트를 표시할 수 없습니다. 다음에 사용자가 요청할 때 다시 표시할 준비가 되도록 `OnContentDismiss` 콜백에서 플레이스먼트를 요청하는 것을 권장합니다.

10. 이제 남아 있는 아이언소스 오퍼월 코드를 제거할 수 있습니다.

### 개인정보##privacy

Unity 레벨플레이를 사용하는 경우 레벨플레이 API를 사용하여 Tapjoy와 다음의 개인정보 보호 플래그를 공유할 수 있습니다.

1. [GDPR을 동의](/grow/is-ads/legal-resources/ironsource-gdpr-compliance.md)합니다.
2. [미국의 개인정보 보호법에 따라 개인정보를 판매하거나 공유하는 것을 거부](/grow/is-ads/legal-resources/ironsource-us-state-privacy-laws.md)합니다.
3. [특정 최종 사용자의 플래그를 아동으로 지정](/grow/is-ads/legal-resources/children-child-directed-apps.md)합니다. COPPA(아동 온라인 프라이버시 보호법)에 따라 앱의 주요 대상이 아동인 경우 모든 최종 사용자의 플래그를 아동으로 지정해야 합니다.

또한 앱이 Google Play가 설계한 가족을 위한 앱 프로그램에 참여하거나 Google Play의 ‘가족’ 섹션에 표시되는 경우 모든 앱 사용자의 플래그를 아동으로 지정하고 사용자의 GAID를 수집하지 않도록 Offerwall SDK의 [이 API](../advanced/user-privacy)를 사용합니다.

Unity 레벨플레이를 사용하지 않거나 오퍼월 SDK를 별도로 설정하려면 이 가이드라인에 따라 [탭조이](../advanced/user-privacy)와 관련 개인정보 보호 플래그를 공유합니다.
