集成 InMobi SDK 并实现盈利非常简单。InMobi 支持 手动下载 和 通过MavenCentral 集成 Android SDK。
如果您是通过直接集成而不是中介方式使用 InMobi Android SDK 版本 10.1.4 或更低版本,请按照 迁移到 SDK 11.4.X 的说明进行操作。
如果您使用 Gradle 构建 Android 应用程序,则可以按照以下说明从 mavenCentral 拉取最新版本的 SDK:
仅适用于使用 Gradle 7 或更早版本的情况:在顶级settings.gradle.kts 文件中包含 mavenCentral:
allprojects {
repositories {
mavenCentral()
}
}
如果您使用的 Gradle 版本高于 7,请跳过步骤 a并继续执行步骤 b。
将以下行添加到应用程序模块的 dependencies 元素中build.gradle。
dependencies {
implementation 'com.inmobi.monetization:inmobi-ads-kotlin:11.4.1'
}
或者,您可以从这里下载最新版本的 InMobi SDK ,并将库复制到您的应用程序模块libs/目录中。
要将库添加到项目的依赖项中,请将以下代码添加到模块的dependencies元素中:build.gradle:
implementation fileTree(dir: 'libs', include: ['*.aar'])
最新版本的 InMobi SDK 支持 Android 5.0(API 级别 21)或更高版本。
要使用 InMobi SDK 实现盈利,您必须将以下依赖项添加到您的应用程序模块中build.gradle:
InMobi Android SDK 使用流行的 ExoPlayer 库来改善插页式视频广告体验。
implementation "androidx.media3:media3-exoplayer:1.4.1"
InMobi SDK 使用 OkHttp 作为 HTTP 客户端,利用 HTTP/2.0 协议与 InMobi 的广告服务器进行所有网络通信。HTTP/2.0 支持在单个 TCP 连接上复用多个广告请求,与 HTTP/1.1 相比,显著降低了延迟和带宽消耗。这可以加快广告加载速度,减少数据使用,并提升性能,尤其是在移动网络环境下。
implementation "com.squareup.okhttp3:okhttp:3.14.9"
implementation "com.squareup.okio:okio:3.7.0"
InMobi SDK 使用 Kotlin 协程来执行所有异步操作,而不会阻塞主 UI 线程,从而确保应用流畅运行。协程提供结构化的并发和自动生命周期管理,防止内存泄漏,并确保在广告销毁时所有后台任务都能正确取消。这种架构对于原生广告模块(完全用 Kotlin 编写)尤为重要,该模块负责处理 VAST 解析、可见性跟踪和视频播放等复杂操作。
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1"
InMobi SDK 11.0.0 的原生广告模块已完全使用 Kotlin 重写(100% Kotlin 代码库),因此 Kotlin 标准库是基本要求。Kotlin 提供了空安全、数据类、密封类和扩展函数等现代语言特性,从而能够编写出更可靠、更易于维护的代码。
implementation "androidx.core:core-ktx:1.5.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.21"
InMobi Android SDK 需要 Google Play 服务库,以便通过 Google Play 广告 ID 实现更精准的广告定向。此外,如果用户同意收集其位置信息,该 SDK 还会使用 Google Play 服务来获取用户位置。
要将 Google Play 服务客户端库添加到您的应用程序:
将以下代码行添加到应用程序模块的依赖项元素中。
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
implementation 'com.google.android.gms:play-services-location:21.0.1'//optional dependency for better targeting
同步您的 Gradle 项目,确保已包含依赖项。
这是将用户重定向到 InMobi WebView 外部 URL 所必需的。要将 Chrome 自定义库添加到您的应用程序:
在 Gradle 构建脚本中,将以下代码添加到应用程序模块的依赖项元素中:
implementation 'androidx.browser:browser:1.8.0'
同步您的 Gradle 项目以确保包含依赖项。
如果应用程序 gradle 脚本中未包含 Chrome 自定义标签页依赖项,则会导致广告请求失败,从而影响使用 InMobi SDK 的应用程序的盈利。
InMobi Android SDK 使用流行的 Picasso 库来加载广告资源。要将 Picasso 库添加到您的应用程序:
在 Gradle 构建脚本中,将以下代码添加到应用程序模块的依赖项元素中:
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'com.squareup.okhttp3:okhttp:3.14.9'
如果您的应用程序 gradle 脚本中未包含 Picasso 依赖项,则会导致插页式广告请求失败,从而影响您使用 InMobi SDK 实现应用程序的盈利。
AppSet ID 有助于按设备和发布商唯一地跟踪用户。支持在您的应用程序中检索 AppSet ID。
在 Gradle 构建脚本中,将以下代码添加到应用程序模块的依赖项元素中:
implementation 'com.google.android.gms:play-services-appset:16.0.2' //optional dependency for better targeting
implementation 'com.google.android.gms:play-services-tasks:18.0.2' //optional dependency for better targeting
有时,引入 InMobi SDK 可能会导致 Android dex 文件中可打包的方法数超过 64K 的限制。例如,如果您的应用为用户提供了大量功能,并且包含实现这些功能的大量代码,就可能出现这种情况。
如果出现这种情况,您可以使用 multidex 支持库来正确构建您的应用程序。具体操作如下:
修改默认配置,将您的应用程序标记为启用多dex模式:
defaultConfig {
...
multiDexEnabled true // add this to enable multi-dex
}
在应用程序模块的构建脚本的 dependencies 元素中添加以下行。
implementation 'androidx.multidex:multidex:2.0.1'
添加依赖项后,此时您的应用程序的 build.gradle 文件将如下所示:
dependencies {
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
implementation 'com.google.android.gms:play-services-location:21.0.1'//optional dependency for better targeting
implementation 'androidx.browser:browser:1.8.0'
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'com.google.android.gms:play-services-appset:16.0.2' //optional dependency for better targeting
implementation 'com.google.android.gms:play-services-tasks:18.0.2' //optional dependency for better targeting
implementation "com.squareup.okhttp3:okhttp:3.14.9"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1"
implementation "androidx.core:core-ktx:1.5.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.21"
implementation "com.squareup.okio:okio:3.7.0"
implementation "androidx.media3:media3-exoplayer:1.4.1"
}
强烈建议您启用此功能ACCESS_FINE_LOCATION以提升广告定向效果。这不是强制性权限,但启用后将有助于实现更精准的广告定向。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
为了进一步提高定位精度,您可以将权限添加ACCESS_WIFI_STATE到CHANGE_WIFI_STATE清单中。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
现在,Google 要求使用 Android 广告 ID (AAID) 的应用开发者,AD_ID在应用目标平台为 Android 13 或更高版本时,必须声明该权限。您可以按如下方式在清单文件中声明 AD_ID 权限:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
硬件加速功能允许您显示 HTML5 视频广告。为此,请将hardwareAccelerated:true元素添加到application<head> 标签中。
<application ...="" android:hardwareaccelerated="true" />
Proguard 有助于移除未使用的符号,从而减小最终应用程序的体积。以下 Proguard 指令应添加到应用程序的 Proguard 配置文件中:
-keepattributes SourceFile,LineNumberTable
-keep class com.inmobi.** { *; }
-keep public class 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
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.okhttp.**
# skip Moat classes
-keep class com.moat.** {*;}
-dontwarn com.moat.**
# skip IAB classes
-keep class com.iab.** {*;}
-dontwarn com.iab.**
# skip Kotlin property metadata
-keep class kotlin.Metadata { *; }
在开始初始化 SDK 之前,我们先暂停一下,进行一些检查:
InMobi SDK 与 AndroidX (JetPack) 库兼容。如果您的应用使用了 AndroidX 库,则 InMobi SDK 9.1.7 或更高版本均符合 AndroidX 的要求。InMobi SDK 无需启用 Jetifier。在移除 Jetifier 之前,请检查是否有其他依赖项需要启用它。但是,如果您使用的是低于 9.1.7 的版本,请按照Google的标准迁移指南,在构建文件中添加相应的标志。
android.useAndroidX=true
android.enableJetifier=true
强烈建议将Android Gradle 插件版本升级到 4.1 或更高版本,以避免 Jetifier 中已知的已知问题(这些问题已在新版 Gradle 插件中修复)。要升级 Android Gradle 插件版本,请参阅Android 开发者文档。
使用单个 InMobi 帐户 ID 即可在所有集成路径中实现应用变现。这包括直接 SDK 集成、中介、竞价前、竞价后以及任何其他受支持的集成模型。不支持为同一应用集成使用多个帐户 ID。
InMobi SDK 11.1.0 及更高版本现已完全支持 Android 16。为了与这些更改保持一致,请注意以下更新:
这些更新确保了运行 Android 16 及更高版本的设备的兼容性和持续性能。有关 Google Play 商店规定的更多详细信息,请参阅Google 的官方指南。
使用 init API 初始化 SDK,方法是在启动器 Activity 中传递上下文、InMobi 帐户 ID 和 SdkInitialization 监听器。发布商现在可以通过完成回调来检查初始化是否成功。初始化完成后,应处理所有广告集成。如果监听器为空,SDK 将使用默认设置启动,并在应用生命周期的后期获取更新后的设置。
必须在 UI 线程上调用此方法。否则,初始化将失败,并影响您的应用程序通过 InMobi 实现盈利的能力。
InMobiSdk.init(this, "Insert InMobi Account ID here", null, new SdkInitializationListener() {
@Override
public void onInitializationComplete(@Nullable Error error) {
if (null != error) {
Log.e(TAG, "InMobi Init failed -" + error.getMessage());
} else {
Log.d(TAG, "InMobi Init Successful");
}
}
});
InMobiSdk.init(this, "Insert InMobi Account ID here", null, SdkInitializationListener() {
Override
fun onInitializationComplete(error : Error?) {
if (null != error) {
Log.e(TAG, "InMobi Init failed -" + error.getMessage())
} else {
Log.d(TAG, "InMobi Init Successful")
}
}
})
| 钥匙 | 类型 | 推理 |
| GDPR 同意 | 细绳 | 同意字符串是一系列数字,用于标识广告技术供应商的同意状态。
字符串必须遵循此处提到的 IAB 合约。 密钥 gdpr_consent 可通过字符串常量 IM_GDPR_CONSENT_IAB 访问。 |
| gdpr_consent_available | 布尔值 |
是:发布商已同意收集和使用用户数据。 错误: - 发布者未提供收集和使用用户数据的同意。 除“true”和“false”之外的任何值均无效,并将被视为发布者未提供的值,即空值。 可以通过字符串常量 IM_GDPR_CONSENT_AVAILABLE 访问密钥 gdpr_consent_available。 |
| GDPR | 细绳 | 无论请求是否受 GDPR 法规约束,偏离设定值(0 = 否,1 = 是)均表示未知实体。 |
consentObject在每次会话中提供授权信息。SDK 不会持久保存授权信息,它只会将其保存consentObject在内存中。如果应用重新启动或崩溃,SDK 将丢失授权信息consentObject。在会话期间,您可以通过以下方式更新同意信息:
InMobiSdk.updateGDPRConsent(JSONObject consentObject)
InMobiSdk.updateGDPRConsent(consentObject:JSONObject)
如果您的应用会收集用户位置数据,我们建议您将其与 InMobi 共享,因为位置信息丰富的广告展示通常能带来更高的收益。InMobi SDK 会在位置信号可用时自动转发。如果您不想共享此数据,请在InMobi 控制面板中选择“不允许共享”。这样, InMobi 将无法访问此应用为您的房源收集的位置数据。

否则,您可以按如下方式传递位置信号:
InMobiSdk.setLocation(locationObj);
InMobiSdk.setLocation(locationObj)
或者,您也可以设置城市、州/省和国家/地区:
InMobiSdk.setLocationWithCityStateCountry(“city”,“state”,“country”);
InMobiSdk.setLocationWithCityStateCountry(“city”,“state”,“country”)
InMobi 依赖发布商根据 GDPR 的规定,获取用户的明确同意才能在欧盟开展业务活动。您可以按如下方式向 InMobi SDK 提供性别和年龄信息:
InMobiSdk.setGender(InMobiSdk.Gender.MALE); // or InMobiSdk.Gender.FEMALE
InMobiSdk.setAge(age);
InMobiSdk.setAgeGroup(InMobiSdk.AgeGroup.BELOW_18);
// other enums: BETWEEN_18_AND_20, BETWEEN_21_AND_24, BETWEEN_25_AND_34
// BETWEEN_35_AND_5, ABOVE_55
InMobiSdk.setGender(InMobiSdk.Gender.MALE) // or InMobiSdk.Gender.FEMALE
InMobiSdk.setAge(age)
InMobiSdk.setAgeGroup(InMobiSdk.AgeGroup.BELOW_18)
传递位置信号有助于更好地进行广告定向,并确保在您的应用上投放的广告与用户的内容相关且高度相关。
我们建议您同时使用年龄限制信息,以遵守相关政策,例如 Google 家庭应用的数据实践政策。您必须根据用户的地理位置数据来确定年龄限制的定义。如果该值设置为 True,InMobi SDK 将不会传输设备标识符,例如 Android 中的“AAID”和 iOS 中的“IDFA”。请注意,默认值为 False。
InMobiSdk.setIsAgeRestricted(false) // possible value are true, false;
InMobiSdk.setIsAgeRestricted(false) // possible value are true, false
AD_ID根据谷歌的公告, 使用 Android 广告 ID 的应用开发者,如果应用的目标平台是 Android 13 或更高版本,则必须声明 该权限。如果AD_ID未声明该权限,系统将显示一串零。
InMobi SDKAD_ID从 10.0.5 版本开始支持该权限。要面向 Android 13 及更高版本,您可以AD_ID在清单文件中按如下方式声明该权限:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
您现在一切就绪!接下来,我们来看看如何设置不同的广告格式并开始盈利。准备好了吗?
By installing this SDK update, you agree that your Children Privacy Compliance setting remains accurate or that you will update that setting, whenever there is a change in your app's audience. You may update the app's Children Privacy Compliance settings at https://publisher.inmobi.com/my-inventory/app-and-placements.