# Offerwall 迁移指南

> 迁移 Offerwall 逻辑，包括将现有 ironSource 回调映射到等效的 Tapjoy 回调（如 onContentReady 和 onContentDismiss）。

1. 集成 ironSource Tapjoy 适配器。您可以将以下示例所示的代码添加到 gradle 文件中：

```java
maven { url "https://sdk.tapjoy.com/"}
implementation 'com.ironsource.adapters:tapjoyadapter:4.1.23'
implementation 'com.tapjoy:tapjoy-android-sdk:12.11.1'
```

您可以在[此处](/grow/levelplay/sdk/android/mediation-networks.md)找到最新版的适配器。

2. 如上所示，除了适配器，我们添加了 Offerwall SDK，因此您可以直接调用 Offerwall SDK 函数。我们需要这样做才能显示 Tapjoy Offerwall。首先，需要将 Tapjoy 导入您的类：

```java
import com.tapjoy.Tapjoy;
```

3. 初始化 Offerwall SDK。初始化成功（或失败）时，您将收到回调，在收到成功回调之前，不要进行任何 Offerwall SDK 调用。

```java
Hashtable<String, Object> connectFlags = new 
Hashtable<String, Object>();

Tapjoy.connect(getApplicationContext(), "TJ_SDK_KEY", connectFlags, new TJConnectListener() {
  @Override
  public void onConnectSuccess() {

  } 
      
  @Override
  public void onConnectFailure() {

  }
});
```

4. 定义两个新的类变量：

```java
private TJPlacementListener placementListener = this;
private TJPlacement placement;
```

5. 配置广告位对象。广告位在 Tapjoy 后台上进行配置，其中包含 Offerwall 内容卡片。在以下示例中，假设您已将广告位命名为“Offerwall”。实际上，您可以将其命名为任何名称，但此处在代码中使用的名称必须与后台上的名称匹配。

```java
placement = Tapjoy.getPlacement("Offerwall", placementListener);
```

6. 您现在可以请求广告位了。通过以下调用来加载广告位，以便在需要显示广告位时广告位准备就绪。Offerwall 广告位应该会快速加载，但最好在显示 Offerwall 之前进行此调用。

```java
placement.requestContent();
```

7. 我们提供了一系列可供您实现的回调。

```java
public void onRequestSuccess(TJPlacement placement); 
public void onRequestFailure(TJPlacement placement, TJError error);
public void onContentReady(TJPlacement placement); 
public void onContentShow(TJPlacement placement);
public void onContentDismiss(TJPlacement placement);
public void onPurchaseRequest(TJPlacement placement, TJActionRequest request, String productId);
public void onRewardRequest(TJPlacement placement, TJActionRequest request, String itemId, int quantity);
public void onClick(TJPlacement placement);
```

以上有一些回调可以替换您可能已经实现的 ironSource 回调（实现 `OfferwallListener` 即可获得这些回调）。下表显示了相应的回调，便于您将自定义逻辑移到相应的 Tapjoy 回调中：

| ironSource 回调        | Tapjoy 回调        |
| -------------------- | ---------------- |
| onOfferwallOpened    | onContentShow    |
| onOfferwallClosed    | onContentDismiss |
| onOfferwallAvailable | onContentReady   |

从 Tapjoy 服务器返回内容请求时，将调用 `onRequestSuccess`。当内容 (Offerwall) 准备好显示时，将调用 `onContentReady`。此时，您可以显示 Offerwall，或设置某种标志，以便在需要时知道其已准备好显示。

8. 要显示 Offerwall 广告位，请检查内容是否已准备就绪，然后调用 `showContent`：

```java
if(placement.isContentReady()) {
  placement.showContent();
}
```

此调用将替换您现有的 ironSource 调用：

```java
IronSource.showOfferwall();
```

9. 用户关闭 Offerwall 后，您必须再次请求内容。您不能多次显示广告位。建议您在 `onContentDismiss` 回调中请求广告位，以便下次用户请求时准备好再次显示。

10. 现在可以移除所有剩余的 ironSource Offerwall 代码。例如，您不再需要设置 ironSource Offerwall 监听器，如果您的类实现了 `OfferwallListener`，请移除该引用。

### 隐私##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 规定的儿童用户，必须将所有终端用户标记为儿童。

此外，如果您的应用加入了 Google Play 的 Designed for Families（亲子同乐）计划，或出现在 Google Play 的“Family（家庭）”类别中，请将应用的所有用户标记为儿童，并使用 Offerwall SDK 的[此 API](../advanced/user-privacy)，这样我们就不会收集用户的 GAID。

如果您不使用 Unity LevelPlay，或者希望单独配置 Offerwall SDK，请按照[这些准则](../advanced/user-privacy)与 Tapjoy 共享相关的隐私标志。
