# Offerwall 移行ガイド

> 移行の手順説明に従って、アプリに実装された既存の ironSource Offerwall を Tapjoy Offerwall に移行します。

1. まず、ironSource Tapjoy アダプターを統合する必要があります。これは以下のように podfile に加えることができます。

```ruby
pod 'IronSourceTapjoyAdapter','4.1.23.1'
```

アダプターの最新バージョンは [こちら](/grow/levelplay/sdk/ios/mediation-networks.md) で確認できます。

2. このアダプターには Offerwall SDK のコピーが付属しているため、Offerwall SDK 関数を直接呼び出しできます。これは、Tapjoy Offerwall を表示するのに必要な作業です。最初に、以下を実行して Tapjoy をクラスにインポートする必要があります。

```objective-c title="Objective-C"
#import <Tapjoy/TJPlacement.h>
```

3. その後、Offerwall SDK を初期化する必要があります。これが成功 (または失敗) したときにコールバックを受け取り、成功コールバックを受け取るまで Offerwall SDK を呼び出す必要はありません。

```objective-c title="Objective-C"
[Tapjoy connect:@"TJ_SDK_KEY"];
    
- (void)tjcConnectSuccess:(NSNotification *)notifyObj 
{
    NSLog(@"Tapjoy connect succeeded");
}

- (void)tjcConnectFail:(NSNotification *)notifyObj 
{
    NSLog(@"Tapjoy connect failed");
}
```

4. 次にプレースメントオブジェクトを作成します。プレースメントは Tapjoy ダッシュボードで設定するもので、Offerwall コンテンツカードが含まれます。この例では、プレースメントに ‘Offerwall’ という名前を付けていることを前提としています。実際には任意の名前を付けることができますが、ここでコードで使用する名前はダッシュボードと一致している必要があります。

```objective-c title="Objective-C"
TJPlacement *placement = [TJPlacement placementWithName:@"Offerwall" delegate:self];
```

5. これで、プレースメントをリクエストする準備ができました。この呼び出しにより、表示することを選択したときに準備ができているように、プレースメントをロードします。Offerwall のプレースメントは迅速にロードされますが、この Offerwall を表示することを考えているときは、事前に呼び出しておくことをお勧めします。

```objective-c title="Objective-C"
[p requestContent];
```

6. 実装できる幅広いコールバックを用意しています。

```objective-c title="Objective-C"
- (void)requestDidSucceed:(TJPlacement*)placement{}
- (void)requestDidFail:(TJPlacement*)placement error:(NSError*)error{}
- (void)contentIsReady:(TJPlacement*)placement{}
- (void)contentDidAppear:(TJPlacement*)placement{} 
- (void)contentDidDisappear:(TJPlacement*)placement{}
```

これらの中には、すでに実装済みの ironSource のコールバックに置き換わるものもあります。以下の表は、対応するコールバックを示しています。これにより、カスタムロジックを適切な Tapjoy コールバックに簡単に変えることができます。

| ironSource コールバック               | Tapjoy コールバック       |
| ------------------------------- | ------------------- |
| offerwallDidShow                | contentDidAppear    |
| offerwallDidClose               | contentDidDisappear |
| offerwallHasChangedAvailability | contentIsReady      |

`requestDidSuceed` は、Tapjoy のサーバーからコンテンツリクエストが返されたときに呼び出されます。`contentIsReady` は、コンテンツ (Offerwall) を表示する準備ができたときに呼び出されます。この時点で、Offerwall を表示するか、フラグを設定して、必要なときに表示できる状態にすることができます。

7. Offerwall のプレースメントを表示するには、以下のようにコンテンツの準備ができていることを確認し、`showContent` を呼び出します。

```objective-c title="Objective-C"
if (placement.isContentReady) {
   [placement showContentWithViewController:nil];
}
```

これは既存の ironSource の呼び出しに置き換わるものです。

```objective-c title="Objective-C"
[IronSource showOfferwallWithViewController:UIViewController];
```

`showContent` メソッドはビューコントローラー引数を受け取ります。nil を渡して、Tapjoy にビューコントローラーを作成させることをお勧めします。ほとんどの場合、これが最も安全なオプションです。複雑なビュー階層があり、何らかの理由で表示を自分で管理する必要がある場合、このメソッドに渡される ViewController が最上位のビューであり、他のビューによって邪魔されず、Tapjoy のコンテンツが削除されるまで他のビューがこのビューの上に配置されないことがきわめて重要です。

8. ユーザーが Offerwall を却下した場合、コンテンツを再度リクエストする必要があります。プレースメントを複数回表示することはできません。`contentDidDisappear` コールバックでプレースメントをリクエストし、ユーザーが次回表示することををリクエストしたときにすぐに表示できるようにしておくことをお勧めします。

9. これで、残りの ironSource Offerwall コードを削除できます。例を次に示します。

```objective-c title="Objective-C"
[IronSource setOfferwallDelegate:yourOfferwallDelegate];
```

同等の Tapjoy バージョンに変換しなかったコールバックも同様です。LevelPlay SDK の初期化時に `@[IS_OFFERWALL]` を指定する場合は、この引数も削除できます。

### プライバシー##privacy

Unity LevelPlay を使用している場合は、LevelPlay 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 で定めるお子様を対象としている場合は、すべてのエンドユーザーにお子様のフラグを付ける必要があります。

Unity LevelPlay を使用していない場合や、Offerwall SDK を個別に設定する場合は、[こちらのガイドライン](../advanced/user-privacy) に従って、関連するプライバシー フラグを Tapjoy と共有します。
