# Offerwall 迁移指南

> 按照 Offerwall 迁移指南从 ironSource 过渡到 Tapjoy。

1. 集成 Unity Offerwall 适配器。您可以使用 ironSource 聚合管理器窗口将此适配器添加到项目中。

2. 添加 Offerwall Unity 插件。此插件可用于从 C# 代码访问 Offerwall SDK 方法。

Tapjoy Unity 插件使用 External Dependency Manager 安装 Offerwall iOS SDK 的副本，并包含了 Tapjoy Android SDK 的副本。由于我们已在步骤 1 中使用适配器添加了 SDK，因此不需要包含第二个副本（我们仅需桥接代码）。修改 */Assets/Tapjoy/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. 直接调用 Offerwall SDK 函数。我们需要这样做才能显示 Tapjoy Offerwall。首先，需要将 Tapjoy 导入您的类：

```csharp
import TapjoyUnity
```

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

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

5. 创建一个广告位对象和一个监听器（了解步骤 5 中的监听器的更多信息）。广告位在 Offerwall 后台上进行配置，其中包含 Offerwall 内容卡片。在以下示例中，假设您已将广告位命名为 **Offerwall**。实际上，您可以将其命名为任何名称，但此处在代码中使用的名称必须与后台上的名称匹配。

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

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

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

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

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

以上有一些回调可以替换您可能已经实现的 ironSource 回调。您可以参考下表中的相应回调，便于您将自定义逻辑移到相应的 Tapjoy 回调中：

| ironSource 回调             | Tapjoy 回调        |
| ------------------------- | ---------------- |
| onOfferwallClosedEvent    | OnContentDismiss |
| onOfferwallOpenedEvent    | OnContentShow    |
| onOfferwallAvailableEvent | OnContentReady   |

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

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

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

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

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

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

10. 现在可以移除所有剩余的 ironSource 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 规定的儿童用户，必须将所有终端用户标记为儿童。

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

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