# Unity Ads 集成

> 将 Unity Ads 连接到 LevelPlay 聚合设置，以增强 Monetization 并向游戏的用户底部提供无缝广告服务。

> **Important:**
>
> 以下文档涉及非 Unity 开发、拥有或运营的产品或服务（“第三方产品”）。
> 这些信息可能已过时或不完整，仅为方便您参考才提供。
> 您对任何第三方产品的使用均受产品自身条款的约束。
> Unity 对这些产品不提供任何担保，也不对因使用这些产品而造成的任何损害或损失负责，包括与第三方供应商提供的内容、广告或材料有关的问题。

本指南将逐步说明如何在 Unity LevelPlay 上将 Unity Ads 设置为广告网络。

对于 Unity Ads 网络，在完成以下步骤 1 后，可使用自动设置工具。自动设置工具将创建 app 和出价者放置/位置并从 Unity Ads 检索放置/位置详细信息，因此无需在 LevelPlay 和 Unity Ads 平台之间切换。或者，也可以手动完成整个设置。

> **Note:**
>
> 要查看此聚合网络的适配器更改日志，请参阅[适用于 Android 的聚合网络](/grow/levelplay/sdk/android/mediation-networks.md.md#integrate-network-adapters)。

## 先决条件##prerequisites

确保将奖励广告服务、插页式广告服务或横幅广告服务正确集成到应用程序中。请参阅以下指定的于平台的指南以了解集成说明：

**Rewarded ads integration:**

* [Unity](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md.md)
* [Android](/grow/levelplay/sdk/android/rewarded-ads-integration.md.md)
* [iOS](/grow/levelplay/sdk/ios/rewarded-ads-integration.md.md)
* [Adobe Air](/grow/levelplay/sdk/adobe/rewarded-ads-integration.md.md)
* [Flutter](/grow/levelplay/sdk/flutter/rewarded-ads-integration.md.md)
* [原生反应](/grow/levelplay/sdk/react/rewarded-ads-integration.md.md)

**Interstitial integration:**

* [Unity](/grow/levelplay/sdk/unity/interstitial-integration.md.md)
* [Android](/grow/levelplay/sdk/android/interstitial-integration.md.md)
* [iOS](/grow/levelplay/sdk/ios/interstitial-integration.md.md)
* [Adobe Air](/grow/levelplay/sdk/adobe/interstitial-integration.md.md)
* [Flutter](/grow/levelplay/sdk/flutter/interstitial-integration.md.md)
* [原生反应](/grow/levelplay/sdk/react/interstitial-integration.md.md)

**Banner integration:**

* [Unity](/grow/levelplay/sdk/unity/banner-integration.md.md)
* [Android](/grow/levelplay/sdk/android/banner-integration.md.md)
* [iOS](/grow/levelplay/sdk/ios/banner-integration.md.md)
* [Adobe Air](/grow/levelplay/sdk/adobe/banner-integration.md.md)
* [Flutter](/grow/levelplay/sdk/flutter/banner-integration.md.md)
* [原生反应](/grow/levelplay/sdk/react/banner-integration.md.md)

- Unity Ads 支持 Android 操作系统版本 4.4（API 级别 19）及更高版本
- Unity Ads SDK 4.7.1+ 需要最低编译 SDK 版本 33，以及最低 Kotlin 版本 1.7.0+

## 步骤 1. 设置 Unity Ads

在设置 Unity Ads 之前，请完成以下步骤：

1. [创建 Unity ID](/cloud/accounts/create-account.md.md)
2. [注册 Unity](https://cloud.unity.com)

> **Note:**
>
> 完成步骤 1 后，可以跳到[步骤 4](/grow/levelplay/sdk/unity/mediation-network-guides.md.md)，并使用自动出价器设置工具在 Unity LevelPlay 上启动并运行 Unity Ads 出价器。如果希望继续进行手动设置，请继续执行步骤 2。

## 步骤 2.在 Unity Ads 上创建项项目

按照以下步骤在 Unity Ads 上创建 app：

### 创建 app

1. 在 [Unity Monetization Dashboard](https://cloud.unity.com/monetization) 上，选择 **Projects**（项目）。

2. 选择 \*\*Organization，\*\*然后选择 **Projects**

3. 选择 **Create project**（创建项目）

   ![创建项目按钮](/api/media?file=/grow/media/images/Screenshot-2023-04-30-at-5.45.44.png)

4. 输入项目名称和 [COPPA](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) 定位

5. 选择 **Create project**（创建项目）

   ![创建项目表单](/api/media?file=/grow/media/images/Screenshot-2023-04-30-at-5.47.25.png)

要变现项目，需要在控制面板中启用 Unity Ads。要从 Monetization（变现）后台的二级导航菜单中选择 **Get started（开始使用**）。

为项目初始化 Unity Ads 时，必须选择聚合提供商。选择 **I plan to use Mediation**（我计划使用聚合）。然后在 **Choose your Mediation Partner** 下选择 **Unity LevelPlay。**
![选择聚合合作伙伴](/api/media?file=/grow/media/images/Screenshot-2023-04-30-at-5.48.59.png)

### 创建广告单元

使用[广告单元](/grow/levelplay/platform/get-started/ad-units.md.md)可显示游戏中触发广告内容的事件：

1. 从左侧导航菜单中，选择 **Monetization（变现）> Ad Units（广告单位**）。
2. 选择 **Add Ad Unit**（添加广告单元）以显示创建模式
3. 输入广告单元名称，然后选择平台（iOS 或 Android）和[广告格式](/grow/levelplay/platform/get-started/ad-units.md.md)（奖励广告服务、插页式广告或横幅广告）。
4. 选择 **Create**（创建）以保存您的广告单元

### 添加放置/位置

创建项目后，导航到 **Monetization > Placements**，并记下这两个平台的**游戏 ID**。

![游戏 ID 位置](/api/media?file=/grow/media/images/Screenshot-2023-04-30-at-8.42.10.png)

要创建新的放置/位置，请选择 **添加放置/位置**。

> **Note:**
>
> 虽然 Unity Ads 在首次创建项项目会自动创建“默认” 广告位，但我们建议为每个 Unity Ads 聚合配置创建新的唯一广告位。

## 步骤 3.获取凭据

您需要从 Unity Ads 平台检索以下详细信息才能在 LevelPlay 上完成设置：

* API 密钥
* 组织核心 ID
* 密钥 ID
* Secret key

导航到 **Set up > API Management**，并记下 **API Key**。

![API 密钥位置](/api/media?file=/grow/media/images/Screenshot-2023-04-30-at-8.42.33.png)

然后，导航到组织设置并记下**组织核心 ID**。

![Organization core ID](/api/media?file=/grow/media/images/Screenshot-2023-04-30-at-8.43.02.png)

要获取**密钥 ID 和密钥**，请导航到 \*\*Monetization，\*\*然后导航到 \*\*API Management。\*\*选择 **Create LevelPlay 服务帐户**，随后将显示一个模式，其中包含您的密钥 ID 和密钥。请务必保存密钥，因为在关闭模态后将无法再次获取密钥。
![创建 LevelPlay 服务帐户](/api/media?file=/grow/media/images/Screen-Shot-2023-06-19-at-12.03.32-2.png)

## 步骤 4.在 LevelPlay 配置 Unity Ads 

获得所有这些参数后，日志 LevelPlay 帐户。

* 转到“**Mediation**”>“**Setup**”>“**SDK Networks**”。

  ![SDK Networks 页面](/api/media?file=/grow/media/images/Screenshot-2023-07-11-at-10.01.15-1.png)

* 从可用网络列表中选择 Unity Ads

* 在相关字段中输入 Unity Ads **API Key** 和 **Organizational Core ID**

  ![Unity Ads API 密钥和组织 ID](/api/media?file=/grow/media/images/Unity-updated-1-1-1.png)

* 要激活自动设置功能，请在 Unity Ads 自动设置工具上切换。这将启用在 Unity Ads 平台上自动创建 app 和出价者的放置/位置，并允许 LevelPlay 从 Unity Ads 检索放置/位置详细信息

* 切换自动设置工具后，输入密钥 ID 和密钥（从步骤 3 开始）。然后，选择 **保存**
  ![Unity Ads 自动设置配置](/api/media?file=/grow/media/images/Unity-updated-2-1.png)

> **Note:**
>
> 如果打开自动设置工具，仍然可以在 LevelPlay 上手动配置 Unity Ads 出价。

## 步骤 5：在 app 级别设置 Unity Ads

### 传统瀑布流设置 

* 从 SDK Networks 页面左侧的列表中选择要集成的app程序
* 在广告单元行中，选择 **Setup**，然后在相关广告单元设置下输入**游戏 ID** 和**放置/位置** **ID**
  ![Unity Ads 瀑布流设置](/api/media?file=/grow/media/images/F15F95A0-A7C7-40AF-A955-8C9BE6DB9621.png)
* 然后，您将在设置控制面板 (Setup Dashboard) 上看到 Unity Ads 已**激活**。

### 出价人设置

有两种方法可以在 LevelPlay 上设置 Unity Ads 出价人：

1. **Auto-setup** - 在 Unity Monetize（变现）后台上自动创建新 app 和广告位，并在 LevelPlay 上填充所有必要的设置
2. **Manual** - 在 LevelPlay 和 Unity Ads 平台上手动输入必要的 app 详细信息

**自动设置**

* 选择要在 Unity Ads 中运行插页式广告、奖励广告或横幅广告服务的app。然后在 Unity Ads 行中选择 define 图标

  ![Unity Ads 出价者设置图标](/api/media?file=/grow/media/images/Screenshot-2023-07-11-at-10.20.55.png)

* 选择 **Add Bider**（添加出价者）可在 Unity Ads 平台上自动创建新的 app 和竞价广告位，并导入游戏 ID 和放置/位置 ID。如果有一个已经所挂的游戏 ID 已附加到 app，如果至少有 1 个没有放置/位置 ID 参数值的放置/位置，则可以使用自动设置工具。在这种情况下，将创建新的竞价放置/位置（用于游戏 ID 插入）

  ![添加出价者自动设置](/api/media?file=/grow/media/images/68A72BE2-91CF-4DA0-8CD4-70FE035A8120-1-1-1.png)

选择 **保存** 以批准并接受所有配置。如果未保存模块，则会在 Unity Ads 平台上创建资源，而不会将数据导入 LevelPlay 平台。

\*\*重要信息：\*\*Unity Ads 出价者实例的状态与 ironSource 广告服务出价者的状态相同（按广告单元）。例如，如果您不使用 ironsource 广告服务出价器获取奖励广告服务，则不会针对 Unity Ads 网络自动激活此出价器。要激活奖励广告服务的 Unity Ads 竞价实例，请选择 Unity Ads 行并在广告单元上切换。 

**手动设置**

* 选择要从 Unity Ads 运行插页式广告服务或奖励广告的app

* 从 Ad Networks 的设置列表中选择 Unity Ads，选择 define 图标，然后在相关字段中插入游戏 ID 和放置/位置 ID

* 选择 **保存**

现在，您将看到 Unity Ads 在帐户中选择的广告单位处于激活状态。

## 步骤 6。将 Unity Ads 适配器添加到构建中##step-6.-add-the-unity-ads-adapter-to-your-build

Unity LevelPlay 支持 Gradle 依赖关系和手动下载机制。

### Gradle##gradle

1. 确保在 app 模块的构建.gradle 脚本中存在以下 Maven 网址（所有适配器只能出现一次）。

```groovy
repositories {
   mavenCentral()
}
```

2. 将适配器的 Maven 名称添加到 app 模块的构建.gradle 脚本。

```groovy
dependencies {
   implementation 'com.unity3d.ads-mediation:unityads-adapter:5.5.0'
   implementation 'com.unity3d.ads:unity-ads:4.16.6'
}
```

### 手动下载##manual-download

1. \*\*下载 Unity Ads 适配器和 SDK：\*\*这将向构建添加 Unity Ads 适配器和 SDK。您可以在[此处](/grow/levelplay/sdk/android/mediation-networks.md)找到最新的 Unity Ads 文件。

2. \*\*将 Unity Ads Adapter 添加到您的项目中：\*\*下载适配器后，将 **UnityAdsAdapter** **jar** 放入 Android 项目的 **libs** 文件夹。

   ![将 Unity Ads 适配器 JAR 放入 Android 项目的 libs 文件夹。](/api/media?file=/grow/media/images/Unity-integration-with-Supersonic-Mediation-08.png)

3. 将以下内容添加到 **Gradle 构建文件**的 **dependencies** 部分下：

```groovy
dependencies {
   implementation 'com.unity3d.ads-mediation:unityads-adapter:5.5.0'
   implementation 'com.unity3d.ads:unity-ads:4.16.6'
}
```

## 步骤 7。更新 AndroidManifest.xml##step-7.-update-androidmanifest.xml

从 Unity Ads Android 适配器版本 4.3.4+（Android SDK 版本 6.17.0）开始，Unity Ads 适配器将以 AAR 形式发布。如果您打算保持 Jar 集成，请添加清单。

**清单权限：**

```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

**清单活动：**在**清单**标签和`<application>`标签中添加以下活动：

```xml
<activity
    android:name="com.unity3d.services.ads.adunit.AdUnitActivity"
    Android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|导航|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity
    android:name="com.unity3d.services.ads.adunit.AdUnitTransparentActivity"
    Android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|导航|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity
    android:name="com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity"
    Android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|导航|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
    android:hardwareAccelerated="false"
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity
    android:name="com.unity3d.services.ads.adunit.AdUnitSoftwareActivity"
    Android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|导航|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
    android:hardwareAccelerated="false"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
```

> **Note:**
>
> 从旧适配器版本升级到 Unity Ads 适配器 2.1.0 时，请确保从项目删除 AAR 以及依赖项部分中的\*\*编译项目 ('广告服务 代码。

**仅适用于 ProGuard 用户** 

如果将 ProGuard 与 Unity Ads 适配器结合使用，必须将以下代码添加到 ProGuard 配置（Android Studio：proguard-rules.pro 或 Eclipse：proguard-project.txt）：

```text
# Keep filenames and line numbers for stack traces##keep-filenames-and-line-numbers-for-stack-traces
-keepattributes SourceFile、LineNumberTable
# Keep JavascriptInterface for WebView bridge##keep-javascriptinterface-for-webview-bridge
-keepattributes JavascriptInterface
# Sometimes keepattributes is not enough to keep annotations##sometimes-keepattributes-is-not-enough-to-keep-annotations
-keep 类 Android.webkit.JavascriptInterface {
   *;
}
# Keep all classes in Unity Ads package##keep-all-classes-in-unity-ads-package
-keep class com.unity3d.ads。** {
   *;
}
# Keep all classes in Unity Services package##keep-all-classes-in-unity-services-package
- 保留类 com.unity3d.服务。** {
   *;
}
-dontwarn com.google.ar.core。**
-dontwarn com.unity3d.services.**
-dontwarn com. ironsource.adapters.unityads。**
```

## 步骤 8。Unity Ads 附加设置##step-8.-unity-ads-additional-settings

### 用户级别 COPPA##user-level-coppa

Unity LevelPlay 允许发布者将 Unity Ads 用户级别的 COPPA 设置直接传达给 Unity Ads 网络。此功能是使用 LevelPlay SDK 7.1.12+、Unity Ads Android 适配器 4.3.15+ 已启用的。

使用以语法 Unity Ads user.nonBehavioral 标志设置为 true：

```java
LevelPlay.setMetaData("UnityAds_coppa","true");
```

使用以语法 Unity Ads user.nonBehavioral 标志设置为 false：

```java
LevelPlay.setMetaData("UnityAds_coppa","false");
```

您现在可以在应用程序中投放 Unity Ads 广告服务。

## 后续步骤##next-steps

要通过 LevelPlay Mediation 利用其他广告网络，请集成[适配器](/grow/levelplay/sdk/unity/mediation-networks.md.md)，然后遵循我们的集成指南。
