# InMobi 集成

> 通过创建 InMobi 帐户、设置广告位并将 InMobi 适配器添加到项目中，将 InMobi 与 Unity LevelPlay 集成。

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

本指南将逐步说明如何在 Unity LevelPlay Mediation 中将 InMobi Live 设置为广告网络。

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

## 先决条件##prerequisites

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

  **Integration guides:**

  * [奖励广告服务](/grow/levelplay/sdk/android/rewarded-ads-integration.md)
  * [插屏广告](/grow/levelplay/sdk/android/interstitial-integration.md)
  * [横幅广告](/grow/levelplay/sdk/android/banner-integration.md)

* 所需的 Gradle 构建具为 3.5.4+

## 步骤 1.创建 InMobi 帐户

1. 使用 InMobi 创建帐户。您可以在[此处](https://publisher.inmobi.com/signup)执行此操作。
2. 在验证您的帐户后，您可以在[此处](https://login.microsoftonline.com/99b97e0e-6a13-4d32-b39a-1a2a28aa6ba8/oauth2/v2.0/authorize?redirect_uri=https%3A%2F%2Fpublisher.inmobi.com%2Fauth%2Fopenid%2Freturn\&client_id=f464a21e-8c1a-4717-aa29-86f89624762d\&scope=openid+profile\&response_type=id_token\&response_mode=form_post\&nonce=8f4vUXm084)登录他们的合作伙伴。

## 步骤 2.在 InMobi 中创建应用程序和放置/位置

要在 InMobi 上配置应用程序，请完成以下步骤：

1. 创建应用程序

   1. 登录后，您将立即看到“**添加库存**”选项。您可以在 AppStore 或 Google 播放 中输入app的 网址。

![添加清单选项](/api/media?file=/grow/media/images/Screen-Shot-2022-02-16-at-21.55.34.png)

2. 或者，如果 app 尚未上线，请选择 \*\*Link? 手动？\*\*然后，您可以手动输入应用程序的名称并选择其平台。
3. 选中 复选框：
   1. 如果您的 app 专门针对 16 岁以下的子项。
   2. 如果允许 inmobi 使用设备位置 - Location Permission。

![位置权限设置](/api/media?file=/grow/media/images/Screen-Shot-2022-02-17-at-9.54.27.png)
4.完成后，选择 **保存并创建放置**/位置。您需要每个平台（iOS Android）都有一个唯一的 InMobi 应用程序，就像您使用 Ironsource 帐户一样。
2.创建放置/位置

创建应用程序后，必须创建放置/位置。广告位是 InMobi 将向其投放指定的广告类型的位置。这将是在应用中配置 LevelPlay SDK 奖励广告服务或 Interstitial 以触发的放置/位置。

1. 从支持的选项中选择此放置/位置的广告单元：
   1. 间隙
   2. 奖励
   3. banner
2. 选择广告单元后，选择 **Create放置/位置**
3. 为您的放置/位置命名并完成放置/位置创建
   ![创建放置/位置](/api/media?file=/grow/media/images/Screen-Shot-2022-02-16-at-21.56.44.png)

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

InMobi 帐户中有 5 条数据需要输入到 ironSource LevelPlay 网络设置模块中，以便 InMobi 能够与 ironSource LevelPlay 正常工作：

| **用户名**          | 这是用于登录 InMobi 帐户的用户名。这是 ironSource 访问帐户的 InMobi 报告 API 所必需的，允许 Unity LevelPlay Mediation 从 InMobi 帐户导入性能数据以用于报告和优化。 |
| ---------------- | ------------------------------------------------------------------------------------------------------------------- |
| **密码**           | 这是用于登录 InMobi 帐户的密码。此信息以及用户名是必需的，以便 ironSource 访问帐户的报告信息。                                                           |
| **API 密钥**       | 这是用于验证报告信息请求的唯一密钥。                                                                                                  |
| **帐户 ID**        | 这是 InMobi 帐户的唯一标识符。                                                                                                 |
| **Placement ID** | 这是 InMobi 将广告服务投放到的唯一放置/位置。                                                                                         |

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

1. 用户名

   这是用于日志 InMobi 帐户的用户名。

2. 密码

   这是用于日志 InMobi 帐户的密码。

3. API 密钥

   这是用于验证报告信息请求的唯一密钥。要接收此信息，请转到管理面板右上角的下拉选单箭头 > 选择帐户设置 > 选择 'API Key' > 按 'Generate Key'。
   ![生成 API 密钥](/api/media?file=/grow/media/images/Screen-Shot-2022-02-16-at-21.59.50.png)

4. 帐户 ID

   这是 InMobi 帐户的唯一标识符。要找到此参数，请选择管理面板左上角的名称图标。然后，您将看到您的**帐户 ID** 已列出：
   ![帐户 ID 位置](/api/media?file=/grow/media/images/Screen-Shot-2022-02-17-at-9.44.24.png)

5. 放置/位置 ID

   要查找应用程序**放置/位置 ID**，请从左侧导航菜单中选择 **Inventory > inventory list** > 从列表中选择相关 app > 选择广告单元 > 选择此 app 的相关放置/位置的名称。复制**放置/位置 ID**。
   ![放置/位置 ID 位置](/api/media?file=/grow/media/images/Screen-Shot-2022-02-16-at-21.58.49.png)

## 将 InMobi 的参数配置为 LevelPlay 帐户

获取上述参数后，日志 LevelPlay 帐户。

* 转到 **Mediation** > ‘**Setup**’ > ‘ **SDK Networks**’。
* 从表中选择 InMobi ****Available Ad Networks。****

![选择 InMobi](/api/media?file=/grow/media/images/Screenshot-2024-05-29-at-17.44.41.png)

* 在相关字段中输入您的 InMobi **用户名**、**密码**、**API 密钥**和**帐户 ID**。

![输入凭据](/api/media?file=/grow/media/images/ironSource-platform-Account-Settings-inMobi.jpg)

* 选择要使用 InMobi 运行 Unity LevelPlay Mediation 的app程序。

![选择 app](/api/media?file=/grow/media/images/Screenshot-2024-05-29-at-17.47.04.png)

* 从 Ad Networks 的设置列表中向下滚动到 InMobi，然后选择 **Define** 图标。在奖励广告服务、插页式或横幅设置下输入**放置/位置 ID**。将 status 设置为 **激活** 并选择 **保存**。

![定义放置/位置](/api/media?file=/grow/media/images/Screenshot-2024-05-29-at-17.48.08.png)

* 然后，您将在 Setup Dashboard（设置后台）上看到 InMobi 为 **Active** for Mediation（激活聚合）。
* 验证与 Reporting API 的集成；此列将通过 Reporting API 检查您的集成，并返回三种可能的响应：Verified、Failed 和 No Response。仔细检查您的集成和上面输入的信息；然后选择“Retry”，直到看到“Verified”。

## 步骤 4.将 InMobi 适配器添加到构建中##step-4.-add-the-inmobiadapter-to-your-build

### Android##android

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

#### Gradle##gradle

1. 确保 app 模块的构建.gradle 脚本中存在以下 Maven 网址。

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

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

```groovy
dependencies {
    implementation 'com.unity3d.ads-mediation:inmobi-adapter:5.4.0'
    implementation 'com.inmobi.monetization:inmobi-ads-kotlin:11.1.1'
}
```

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

1. 下载 InMobi 适配器：将 InMobi 适配器和 SDK 添加到构建中。您可以在[此处](/grow/levelplay/sdk/android/mediation-networks.md)找到相关文件。

2. 将 InMobi 适配器添加到项目中：下载适配器后，将 **InMobiAdapter 和 InMobi SDK** 放入 Android 项目的 **libs** 文件夹。

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

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

```groovy
dependencies {
    implementation 'com.unity3d.ads-mediation:inmobi-adapter:4.3.32'
    implementation 'com.inmobi.monetization:inmobi-ads-kotlin:10.8.7'
}
```

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

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

### 清单权限（可选）##manifest-permissions-(optional)

在**清单**标签内但在`<application>`标签外添加以下权限：

```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<queries>
    <intent>
        <action android:name="android.support.customtabs.action.CustomTabsService" />
    </intent>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https" />
    </intent>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" />
    </intent>
</queries>
```

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

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

```xml
<activity
    android:name="com.inmobi.ads.rendering.InMobiAdActivity"
    Android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize|screenLayout|locale|fontScale|uiMode"
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.NoTitleBar"
    tools:ignore="UnusedAttribute" />
```

### 仅适用于 ProGuard 用户##for-proguard-users-only

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

```java
-keepattributes SourceFile、LineNumberTable
-keep class com.inmobi.** { *; }
-dontwarn com.inmobi。**
- 保留 public 类 com.google.android.gms。**
-dontwarn com.google.android.gms.**
-dontwarn com.squareup.picasso.**
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient { }
    public *;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
    public *;
}
# skip the Picasso library classes##skip-the-picasso-library-classes
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.picasso.**
-dontwarn com.squareup.okhttp.**
# skip Moat classes##skip-moat-classes
-keep class com.moat.** { *; }
-dontwarn com.moat。**
# skip AVID classes##skip-avid-classes
-keep 类 com.integralads.avid.library.* {*;}
```

## 步骤 6。InMobi 其他设置##step-6.-inmobi-additional-settings

### 用户级别年龄受限用户##user-level-age-restricted-user

Unity LevelPlay 聚合允许发布者将 InMobi 的 IsAgeRestricted 设置直接传达给 InMobi 网络。此功能是使用 LevelPlay SDK 7.2.1+、InMobi Android 适配器 4.3.14 + 已启用的。

使用语法 InMobi setIsAgeRestricted 标志设置为 true：

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

使用语法 InMobi setIsAgeRestricted 标志设置为 false：

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

## 评估广告网络集成##evaluate-your-ad-network-integration

* 验证您的广告网络与我们的 [Integration Helper](/grow/levelplay/sdk/android/integration-helper.md) 集成。LevelPlay SDK 提供了一个工具，可确保已成功集成我们的 SDK 以及任何其他网络适配器。

* 使用此布尔值管理集成的聚合广告网络的调试日志

  ```java
  LevelPlay.setAdaptersDebug(true);
  ```

* 设置为 **TRUE** 时，这行代码将启用调试日志，以帮助您解决所有聚合广告网络的问题。在 app 与我们的广告单位上线之前，请删除此代码！SDK 6.5.2 及更高版本支持。

现在，您可以通过 Unity LevelPlay Mediation 提供 InMobi 广告服务。

## 后续步骤##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)
