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

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