# Google AdMob 集成

> 通过设置 AdMob 广告单位并在 LevelPlay 后台中配置集成，将 AdMob 与 Unity LevelPlay 聚合集成。

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

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

本指南将逐步说明如何在 Unity LevelPlay Mediation 中将 AdMob 和 AdMob Native 设置为实时广告网络。

## 先决条件

确保在应用程序中正确集成 LevelPlay SDK [插页式](/grow/levelplay/sdk/unity/interstitial-integration.md.md)、[奖励式](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md.md)或[横幅式聚合](/grow/levelplay/sdk/unity/banner-integration.md.md)。

Google Ad Manager 广告服务使用 AdMob SDK。

从 AdMob SDK 7.69.0+ 开始，AdMob 使用 XCFramework。如果要使用 CocoaPods 进行 AdMob 集成，请确保您有 CocoaPods 版本 1.9.0+。

AdMob 支持 Android 操作系统版本 4.1（API 级别 16）及更高版本。所需的 Gradle 构建具为 3.5.4。\\

AdMob SDK 支持 iOS 版本 10+，将为 iOS 版本 11+ 上的用户服务器广告服务。

## 步骤 1.创建 AdMob 帐户

1. 要通过 Unity LevelPlay Mediation 访问 AdMob 的横幅广告和原生广告库存，您需要[创建 AdMob 帐户](https://www.google.com/admob/)。
2. 建议将 AdMob 帐户的时间调整为 UTC，以便与 Ironsource 平台保持一致。这将确保准确的报告。[了解更多信息](https://support.google.com/admob/answer/7276705?hl=en)。

## 步骤 2.在 Admob 中创建应用程序和广告区域

接下来，您必须添加 app 并在 AdMob 帐户中设置 Ad Zones。

AdMob 不允许在同一设置中设置超过 3 个相同广告类型的广告区域。\
例如，聚合组的奖励广告服务不得超过三个。

### 添加 app

* 登录 AdMob 帐户。在控制面板上，选择 **Apps**。

* 此时将显示一个模态，您可以在其中搜索 app、手动添加 app 或直接选择现有 app 进行变现。

  > **Note:**
  >
  > 您需要每个平台（iOS Android）都有一个唯一的 AdMob 应用程序，就像您的 LevelPlay 帐户一样。

* 选择插页式、奖励式、横幅广告或原生高级（横幅广告的原生广告服务）作为广告单元格式，并输入相关详细信息。

#### 插页式视频

* **Ad Type（广告类型**）：您可以保留这两个复选框，因为我们支持文本、图像、视频和富媒体插页。
* **Ad unit name（广告单元名称）**：建议的最佳做法是直观地命名广告单元，以便通过 Unity LevelPlay Mediation 很容易识别为要投放 AdMob Interstitials 的广告单元。

#### 奖励广告

* **Ad unit name（广告单元名称）**：建议的最佳做法是直观地命名广告单元，以便通过 Unity LevelPlay Mediation 轻松识别为 AdMob 奖励广告服务的广告单元。

#### 横幅广告

* **Ad Unit Name（广告单元名称**）： 建议的最佳做法是直观地命名广告单元，以便很容易识别为您即将投放的广告单元 AdMob Banners Unity LevelPlay Mediation
* **eCPM 地面 -** 根据国家和瀑布流策略启用并输入 eCPM 值

> **Important:**
>
> 自动刷新：**选择“不刷新”选项。**（提醒 - 您可以在聚合平台上控制刷新速率）

#### 原生横幅

横幅的原生广告服务使您能够从 Google AdMob 访问原生广告需求。这意味着您可以通过访问 Google 的原生需求和横幅需求来提高横幅效果。

* **Ad unit name（广告单元名称）**：键入要轻松识别的名称
  * **高级设置**：同时选择**图像**和**视频**
  * **eCPM 地面**：根据您的国家和瀑布流策略启用并输入 eCPM 值

现在检索 app ID 和 Ad Unit ID 并保存以供以后使用。然后，选择 **Done**。

## 步骤 3.在 LevelPlay 网络设置模块中激活 AdMob

在 LevelPlay SDK Networks Setup（LevelPlay SDK 网络设置）页面上设置 AdMob 时，请登录 Google 帐户，然后将自动获取运行 AdMob 插页、奖励、横幅广告和原生广告服务的必要参数。

为了使 AdMob 能够与 LevelPlay SDK 正常工作，需要将 AdMob 帐户中的一些数据插入到 ironSource Network Setup Module 中：

| 数据                | 描述                           |
| ----------------- | ---------------------------- |
| App ID（应用 ID）     | Admob 后台上分配给 app 的唯一 ID。     |
| 广告单元 ID           | Admob 后台上分配给 app 广告单元的唯一 ID。 |
| Client ID（客户端 ID） | 指定帐户与广告单元之间关系的唯一标识符。         |
| 客户端密钥             | 与客户端 ID 配对的密钥                |
| 刷新令牌              | 客户端应用程序已收到的刷新令牌。             |

获取此信息后，必须在 LevelPlay 帐户中配置 AdMob 的参数。正确添加上述信息后，您将能够充分利用 AdMob 的广告库存和关于 Unity LevelPlay Mediation 的报告数据。

1. **App ID（应用 ID）**
   要获取 app ID，请转到 Admob 平台上左侧栏中的 **Apps** 选项卡，然后选择 **App Settings**。然后，您将看到应用程序的设置以及 app ID。

![app ID location](/api/media?file=/grow/media/images/App-ID-1.png)

2. **广告单元 ID**
   要获取广告单位 ID，请转到 Admob 平台上左侧栏的 **Apps** 选项卡，然后选择 **Ad Units**。然后，您将看到应用程序的广告单位以及 Ad Unit ID。

![广告单元 ID 位置](/api/media?file=/grow/media/images/Ad-Unit-ID.png)

3. **客户端 ID 和客户端密钥**

   1. 要获取**客户端 ID 和客户端密钥**，请访问 [Google API Manager](https://console.cloud.google.com/apis)。

   2. 选择页面左上角的 **API 项目**下拉选单，选择 **Create a project**（创建项目）或选择已为此 app 创建的项目。如果要为此创建新项目，请在出现的对话框中提供**项目名称**、**计费帐户**和 **Location**，然后选择 **Create**。

   3. 在左侧栏中，选择 **Credentials**，然后选择 **OAuth consent screen** 选项卡。 在此页面上，提供**商品名称**。选择 **Save（保存）**。

   4. 在左侧栏中，选择 **Dashboard**\*\* 和\*\*，然后选择 **启用 API 和服务**。

   5. 接下来，启用 **AdMob API**。

   6. 选择左侧栏中的 **Credentials** 选项卡。选择 **Create credentials** 下拉列表并选择 **OAuth Client ID**。

   7. 选择 **Web application**，并为 app 提供名称。在以下字段中，必须输入至少一个**授权重定向 URI** 的[https://developers.google.com/oauthplayground](https://developers.google.com/oauthplayground)。例如：

      * **授权的 JavaScript 来源：**`https://YOUR_NAMESPACE **(Optional)**`
      * **授权重定向 URI：**[https://developers.google.com/oauthplayground](https://developers.google.com/oauthplayground)

   8. 选择 **Create**，此时将显示**客户端 ID** 和**客户端密钥**。

4. **刷新令牌**
   1. 要获取**刷新令牌**，请访问 **[OAuth 2.0 Playground](https://developers.google.com/oauthplayground/#step1\&scopes=https%3A//www.googleapis.com/auth/adwords\&url=https%3A//\&content_type=application/json\&http_method=GET\&useDefaultOauthCred=checked\&oauthEndpointSelect=Google\&oauthAuthEndpointValue=https%3A//accounts.google.com/o/oauth2/auth\&oauthTokenEndpointValue=https%3A//www.googleapis.com/oauth2/v3/token\&includeCredentials=unchecked\&accessTokenType=bearer\&autoRefreshToken=unchecked\&accessType=offline\&forceAprovalPrompt=checked\&response_type=code)。**
   2. 选择右上角的设置图标。取消选中标记为**强制批准提示词**的复选框，并选中 **Use your own OAuth credentials**（使用您自己的 OAuth 凭据）。输入**客户端 ID** 和**客户端密钥**。

![OAuth 设置](/api/media?file=/grow/media/images/AdMob-18.png)

3. 接下来，在**步骤 1 中：选择 & Authorize APIS**，输入 **[https://www.googleapis.com/auth/admob.report](https://www.googleapis.com/auth/admob.report)** 并选择 **Authorize APIs**。

![授权 API](/api/media?file=/grow/media/images/Step-1.png)

4. 授权项目访问 AdMob 数据。
5. 然后，您应该会收到步骤 1 中的授权代码，并可以选择**令牌交换授权代码**按钮。然后，您将获得一个 **Refresh 令牌**和一个 Access Token。

![刷新令牌](/api/media?file=/grow/media/images/Admob-22.png)

### 在 LevelPlay 帐户中配置 AdMob 参数

* 拥有所有这些参数后，登录 IronSource 帐户，然后转到 **Monetize** > **SETUP** > **SDK Networks**。

![SDK 网络](/api/media?file=/grow/media/images/Level-Play-SDK.jpg)

* 从 **Manage Networks** 列表中选择 Admob，然后输入 Admob **客户端** **ID**、**Client Secret** 和 **Refresh Token**，或选择 **Login with Google** 选项。

![登录选项](/api/media?file=/grow/media/images/client-id.png)

![使用 Google 登录](/api/media?file=/grow/media/images/log-in-with-google.png)

* 选择 **Save（保存）**。然后，将在 **Available Ad Networks** 表中启用 AdMob 和 AdMob Native。

![SDK Networks 表](/api/media?file=/grow/media/images/sdk-networks.png)

* 接下来，选择要使用 AdMob 运行 Unity LevelPlay 聚合的app程序。
* 从 Ad Networks 的 Setup 列表中选择 Admob，然后选择 Tool **Define** 图标。然后在 **Interstitial**、**Rewarded ads** **Video** 或 **Banner Settings** 下插入 **App ID** 和 **Ad Unit** **ID**。

![定义设置](/api/media?file=/grow/media/images/define.png)

* 验证与 Reporting API 的集成；此列将通过 Reporting API 检查您的集成，并返回三种可能的响应：Verified、Failed 和 No Response。仔细检查您的集成和上面输入的信息；然后选择 **Retry**（重试），直到看到 **Verified（已验证**）。

## 步骤 4.将 Admob Adapter 添加到构建中##step-4.-add-the-admob-adapter-to-your-build

> **Important:**
>
> 从 V17.0.0 **（适配器版本 4.3.1 及更高版本）** 开始，AdMob 的 SDK 要求发布者将其 AdMob app ID 作为 `<application/>` 标签的子项添加到 app 的 AndroidManifest：
>
> ```xml
>
> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" 
>            android:value="[ADMOB_APP_ID]"/>
> ```
>
> 将“ADMOB\_app\_ID”替换为您在步骤 3 中检索的 app ID 值。

1. 确保在 allprojects > repositorys 代码块中包含以下行

```groovy
allprojects {
    repositories {
       flatDir {
           dirs 'libs'
       }
       google()
    }
}
```

2. 将以下依赖项添加到 dependencies 代码块中

```groovy
dependencies {
    实现 fileTree(dir: 'libs', include: ['*.jar'])
}
```

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

### 将 Admob Adapter 与 Gradle 集成##integrate-the-admob-adapter-with-gradle

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

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

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

```groovy
dependencies {
    implementation 'com.unity3d.ads-mediation:admob-adapter:5.11.0'
    implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.2.1'
}
```

#### 通过手动下载集成 Admob 适配器##integrate-the-admob-adapter-through-manual-download

1. **下载 Admob Adapter：**\
   将 Admob Adapter 添加到构建中。您可以在[此处](/grow/levelplay/sdk/android/mediation-networks.md)找到最新的 Admob 适配器。
   **重要信息！**Admob 适配器不包含 Admob SDK。还**需要**直接添加 Admob SDK。

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

   ![将适配器 JAR 文件拖放到 Android 项目的 libs 文件夹中。](/api/media?file=/grow/media/images/Supersonic-Mediation-Drop-Libs.png)

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

```groovy
dependencies {
    implementation 'com.unity3d.ads-mediation:admob-adapter:5.11.0'
    implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.2.1'
}
```

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

从 LevelPlay Android SDK 版本 6.17.0（AdMob Android 适配器版本 4.3.10+）开始，AdMob 适配器将以 AAR 形式发布。仅当打算保持 Jar 集成时，才添加清单。

### 清单权限##manifest-permissions

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

### 清单活动##manifest-activities

在 **manifestAdditions** 上的 **\<application>** 标签中添加以下活动：

```xml
<activity android:name="com.google.android.gms.ads.AdActivity"
Android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" Android:theme="@android:style/Theme.Translucent" />
```

从 V17.0.0 \*\*（适配器版本 4.3.1 以上）\*\*开始，AdMob 的 SDK 要求发布者将其 AdMob app ID 作为 `<application></application>` 标签的子项添加到 app 的 AndroidManifest：

```xml
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID"
           android:value="[ADMOB_APP_ID]"/>
```

将“ADMOB\_app\_ID”替换为您在步骤 3 中检索的 app ID 值。
否则会导致 AdMob 的 SDK 引发的崩溃。如需了解更多信息，请参阅 [AdMob 指南](https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml)。

## 步骤 6。其他步骤##step-6.-additional-steps

### 面向子项的设置 – COPPA##child-directed-setting--coppa

Unity LevelPlay 聚合允许发布者将 AdMob 面向儿童的设置直接传达给 AdMob 网络。
此功能是使用 LevelPlay SDK 6.14.0+、AdMob Android 适配器 4.3.9+ 已启用的。

使用以下语法，使用参数 TAG\_FOR\_CHILD\_DIRECTED\_TREATMENT\_TRUE 设置 AdMob **setTagForChildDirectedTreatment**：

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

使用以下语法，使用参数 TAG\_FOR\_CHILD\_DIRECTED\_TREATMENT\_FALSE 设置 AdMob **setTagForChildDirectedTreatment**：

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

要了解有关 AdMob 网络下面向儿童的设置的更多信息，请访问[此处](https://developers.google.com/admob/android/targeting#child-directed_setting)。

### 未满同意年龄的用户 – GDPR##users-under-the-age-of-consent--gdpr

Unity LevelPlay 聚合允许发布者与 AdMob 网络进行通信，AdMob 网络是 Tag For Users under the Age of Consent in Europe (TFUA) 请求。
此功能是使用 LevelPlay SDK 6.14.0+、AdMob Android 适配器 4.3.9+ 已启用的。

使用以下语法使用 TAG\_FOR\_Under\_AGE\_OF\_CONSENT\_TRUE 设置 **setTagForUnderAgeOfConsent**：

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

使用以下语法使用 TAG\_FOR\_Under\_AGE\_OF\_CONSENT\_FALSE 设置 **setTagForUnderAgeOfConsent**：

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

要了解有关 AdMob 网络下面向儿童的设置的更多信息，请访问[此处](https://developers.google.com/admob/android/targeting#users_under_the_age_of_consent)。

### 广告内容过滤##ad-content-filtering

Unity LevelPlay 聚合允许发布者与 AdMob 网络通信，为所有广告请求提供最高广告内容评级。
此功能是使用 LevelPlay SDK 7.12.0+、AdMob Android 适配器 4.3.23+ 已启用的。

使用以下语法设置 maxAdContentRating：

```java
LevelPlay.setMetaData("AdMob_MaxContentRating","MAX_AD_CONTENT_RATING_G");
```

此属性的可能值基于 Google 定义的数字内容标签分类：

* MAX\_AD\_CONTENT\_RATING\_G
* MAX\_AD\_CONTENT\_RATING\_PG
* MAX\_AD\_CONTENT\_RATING\_T
* MAX\_AD\_CONTENT\_RATING\_MA

要了解有关 AdMob 网络下的 Ad Content Rating 属性的更多信息，请访问[此处](https://developers.google.com/admob/android/targeting#ad_content_filtering)。

### 内容网址映射支持##content-url-mapping-support

Unity LevelPlay 支持 Google 的应用程序内容映射，并允许使用“Google\_Content\_Mapping”设置共享 URL。此功能是使用 LevelPlay SDK 7.7.0+、AdMob Adapter 4.3.41+ 已启用的。在[此处](https://support.google.com/admob/answer/11050896)了解有关 Google 内容映射的更多信息。

要通道单内容网址，请使用以下语法：

```java
LevelPlay.setMetaData("Google_Content_Mapping","https://www.example.com");
```

要支持多个 URL，请使用相同的密钥并共享最多 4 个 URL：

```java

LevelPlay.setMetaData("Google_Content_Mapping",["https://www.example1.com","https://www.example2.com"]);
```

## 验证广告网络集成##verify-your-ad-network-integration

要验证 LevelPlay 和其他广告网络的集成，请遵循本[文档](/grow/levelplay/sdk/android/integration-helper.md)。

## 后续步骤##next-steps

要通过 Unity LevelPlay 利用其他广告网络，请集成适配器并按照我们的集成指南进行操作。

**Platform adapters:**

* [Unity](/grow/levelplay/sdk/unity/mediation-networks.md)
* [Android](/grow/levelplay/sdk/android/mediation-networks.md)
* [iOS](/grow/levelplay/sdk/ios/mediation-networks.md)
* [Adobe AIR](/grow/levelplay/sdk/adobe/mediation-networks.md)
* [Flutter](/grow/levelplay/sdk/flutter/mediation-networks.md)
* [React Native](/grow/levelplay/sdk/react/mediation-networks.md)
