Android

Getting Started with Android Integration

第一步: 创建InMobi 账户

注册 InMobi 账户:

  1. 以发行者身份注册
  2. 完成你账户电子邮箱的验证。

第二步: 注册你的应用程序

  1. 点击添加应用程序,然后点击以下所示的链接。
  2. 命名你的应用程序,选择你的平台,然后继续下一步操作。
  3. 阅读有关针对13岁以下儿童的限制条件,如果适合你,则勾选复选框。

    注意: 由于应用程序没有统一资源定位符(URL),测试模式是默认激活的。一旦激活,你可以点击链接进入如下图所示仪表板的统一资源定位符(URL)。
    你的应用程序已经为赢利做好准备了。

第三步: 创建放置ID

放置 ID是 AdMob广告单元的InMobi专有名词。例如,如果你正尝试通过 InMobi 网络利用横幅广告单元盈利,你需要创建一个“横幅广告”类型的放置ID。

为了能更好地盈利,请参考下表:

AdMob广告单元类型 InMobi 放置类型
横幅 横幅
插播式 插播式
奖励插播式 奖励插播式
原生 原生内容
  1. 选择相关的广告类型来定义你的广告放置。
  2. 根据广告单元在应用程序中的位置和环境,为更高价值的单元标注标签。

第四步: 填写支付信息。

创建、验证和激活付款配置文件,使您的收入兑现。InMobi有60天的支付周期。这意味着,指定月份的收入将在60天支付周期末存入。您可以选择通过PayPal或电汇/实时全额结算系统兑现您的收入。

更多付款方式信息点击 这里

第五步: 在AdMob仪表板上,将InMobi 配置为广告源。

  1. 登录到你的AdMob账户。
  2. 导航到你想通过 InMobi SDK赢利的指定广告单元。
  3. 根据调节选项导航到 ad-sources(广告源)(如果你已经用AdMob完全集成,广告源的数量就是1)。选择新的广告网络,然后将 InMobi添加为广告源。
  4. 在 InMobi的网络设置页面插入你的 InMobi账户 ID和放置ID。

    你的账户ID在InMobi 账户中可以使用,如下截图所示。

    放置ID在放置部分,如下截图所示。

  5. 安装广告网络优化:对于自动eCPM优化,发行者必须在 AdMob接口中提供他/她InMobi报告API证书。
    支持InMobi支持生成此功能需要的密钥。

安装奖励性插入式广告

你可以在AdMob仪表板或InMobi的仪表板上配置奖励。

在 InMobi仪表板上的配置相同,选择 Use third-party ad network settings(使用第三方广告网络设置)。

填写奖励细节的关键值,用户观看完视频后, InMobi SDK 将会兑现。例如,你可以填写下列奖励细节:

Key = Coins, Value = 1000

在 InMobi 仪表板上安装奖励时,要确保奖励的值是整数形式。

安装原生广告

当创建原生内容放置类型以支持AdMob仪表板的原生广告单元时,确保在InMobi 仪表板上不要改变关键名称。这是为了确保InMobi集成可以在原生广告格式上运行。

注意:

  • InMobi 适配器 不会兑现AdMob SDK原生广告的shouldRequestMultipleImages标示。
  • InMobi 适配器不会兑现AdMob SDK的 getImageOrientation/preferredImageOrientation标示。

第六步:通过AdMob适配器集成InMobi SDK

InMobi SDK 和AdMob适配器集成起来非常流畅。从 InMobi获取广告,你需要整合 InMobi SDK和适配器。

添加InMobi SDK 到你的项目

方法 1: 通过jCenter拖拽最新的SDK

如果你使用Gradle来创建你的安卓应用程序,你可以从jCenter拖拽最新版本的SDK。

这样操作:

  1. 将此包含进你顶层的 build.gradle文件:

    allprojects {
        repositories {
            jcenter()
        }
    }
    
    
  2. 添加以下代码行到你应用模块 build.gradle中的依赖关系元素。

    compile 'com.inmobi.monetization:inmobi-ads:6.0.0'
    
    
  3. 同步你的 Gradle项目以确保依赖关系被构建系统下载。

方法2: 将SDK库添加到你的应用项目

此外,你可以在 这里下载InMobi SDK的最新版本,并复制库到你应用模块的libs/目录下。

添加库到你项目的依赖关系,并且添加该代码行到你模块 build.gradle的依赖关系元素中。

compile fileTree(dir: 'libs', include: ['*.jar'])

添加并验证依赖关系

要使用InMobi 广告SDK盈利,你必须添加下列依赖关系:

  • Google Play Services

    安卓的InMobi SDK 需要 Google Play Services库通过Google Play Advertising ID激活更好的广告定位。另外, SDK还使用 Google Play Services获得位置修正,用户应同意获取位置。

    添加Google Play Services客户端库到你的应用:

    1. 添加下列代码行到你应用模块的依赖关系元素。

      compile 'com.google.android.gms:play-services:8.4.0'
      
      
    2. 同步你的Gradle项目,确保包含了依赖关系。
    3. 添加下列元素到你的应用清单。

      <meta-data android:name="com.google.android.gms.version"
      android:value="@integer/google_play_services_version" />
      
      /pre>
      		
  • Picasso

    安卓 InMobi SDK使用常用的Picasso库来加载广告资产。

    添加Picasso库到你的应用:

    1. 添加下列代码行到Gradle 构建脚本中的应用模块依赖关系元素。

      compile 'com.squareup.picasso:picasso:2.5.2'
      
      
    2. 同步你的Gradle 项目以确保包含了依赖关系。

    Note: Failure to include Picasso dependency in your application gradle scripts will cause interstitial ad requests to fail, thus affecting monetization of your app with the InMobi SDK.

  • 支持库

    要支持原生股广告格式,你必须添加V4支持库。

    这样,添加下列代码行到Gradle构建脚本的应用模块依赖元素中。

    compile 'com.android.support:appcompat-v7:24.0.0'
    
    
  • RecyclerView

    For supporting free scroll of a deck of images or ads, you must use RecyclerView.

    To do so, add the following line to the application module’s dependency element in the Gradle build script.

     compile 'com.android.support:recyclerview-v7:24.0.0'
    
    

    Note

    Failure to include RecyclerView dependency in your application gradle scripts will cause interstitial ad requests to fail, thus affecting monetization of your app with the InMobi SDK.

变更清单文件

授权

你的应用清单中必须包含下列强制许可。没有包含这些许可会影响你在InMobi网络利用应用赢利的能力。

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

除了以上强制许可外,强烈推荐你考虑 ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION 来激活更佳的广告定位。这并不是强制许可。然而,它能帮助你激活准确的广告定位。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

进一步改进定位,你可以添加 ACCESS_WIFI_STATECHANGE_WIFI_STATE 许可到清单中。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

如果你正在请求富媒体广告,可以添加下列许可。

<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

应用程序安装属性

Mandatory permission:

需要应用程序安装属性,在清单文件中添加下列代码。

<receiver android:enabled="true" android:exported="true" android:name="com.inmobi.commons.core.utilities.uid.ImIdShareBroadCastReceiver" tools:ignore="ExportedReceiver">
          <intent-filter>
              <action android:name="com.inmobi.share.id" />
          </intent-filter>
 </receiver>

硬件加速

硬件加速可以使你播放HTML5 视频广告。如需播放,请添加 hardwareAccelerated:true元素到application标签。

混淆器配置

混淆器帮助删除未使用的符号,并减少最终应用痕迹。下面的移位指令应添加到你应用的混淆器配置文件中。

-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.picasso.**
-dontwarn com.squareup.okhttp.**
# skip Moat classes
-keep class com.moat.** {*;}
-dontwarn com.moat.**
# For old ads classes
-keep public class com.google.ads.**{
   public *;
}
# For mediation
-keepattributes *Annotation*
# For Google Play services
-keep public class com.google.android.gms.ads.**{
   public *;
}

为安卓N配置你的应用程序

安卓的SDK 6.0.0是安卓平台的最新版本,与 安卓 N (API level 24)兼容。你可以用应用清单的微小变化在安卓N上盈利。

如果你的应用程序目标是API 24级或更高版本,请声明你应用中的 InMobiAdActivity元素与之类似

<activity android:configchanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize|screenLayout" android:hardwareaccelerated="true" android:name="com.inmobi.rendering.InMobiAdActivity" android:resizeableactivity="false" android:theme="@android:style/Theme.NoTitleBar" tools:ignore="UnusedAttribute" />

特别需要注意, android:resizeableActivity=”false” 属性和配置该活动的screenLayout发生了变化。

添加 InMobi 适配器到你的项目

这里下载适配器。添加 InMobi 适配器到你的Android Studio项目中。

代码步骤

代码步骤与之类似,因为他们是为获取和加载广告而进行的常规AdMob集成。使用 AdMob 账户ID初始化AdMob SDK 和“广告单元ID”来请求和获取广告。

更多信息

这里下载示例代码。

AdMob SDK最新的文档和代码示例见 这里。 .

第七步: 测试集成

确保AdMob SDK传递广告请求到InMobi进行测试。

  • 为每个网络设置手动广告网络优化,包括 AdMob。取消Ad network optimization(广告网络优化)复选框。
  • 为所有网络设置手动eCPM(千次展示可得广告收入)底限值 ,使InMobi的eCPM 底限高于其他网络,这可以确保广告请求被传送到InMobi进行测试。在以下示例中,InMobi 底限值被设为5美元,AdMob 被设为0.01美元。

执行过以上操作步骤后,你可以测试并传送请求到InMobi SDK申请广告加载。

激活关键SDK日志

你可以添加下列代码行到你正在整合广告单元来激活关键SDK日志的活动。

InMobiSdk.setLogLevel(LogLevel.DEBUG);

如果已经激活了 InMobi 门户上的“测试模式”,你也可以利用广告单元和广告请求的诊断标签上的可得反馈。

第八步: 高级

传递用户位置

Recommended: If your app collects location from the user, we recommend passing it up, as impressions with location signal have higher revenue potential. InMobi SDK will automatically pass the location signals if available in the app. If you use location in your app, but would like to disable passing location signals to InMobi, then TURN OFF the “Location Automation” for your property on the InMobi dashboard.

你可以在中介广告请求对象中,调用Admob SDK中 MediationAdRequest 类的 setLocation()API 来传递位置信息。

传递用户信息统计数据

InMobi支持下列参数:

项名 描述
InMobiNetworkKeys.AGE_GROUP InMobiNetworkValues.ABOVE_55(55岁以上),
InMobiNetworkValues.BELOW_18(18岁以下),
InMobiNetworkValues.BETWEEN_18_AND_20(18-20岁),
InMobiNetworkValues.BETWEEN_25_AND_34(25-30岁),
InMobiNetworkValues.BETWEEN_35_AND_54(35-54岁),
InMobiNetworkValues.BETWEEN_21_AND_24(21-24岁)
用户年龄段
InMobiNetworkKeys.HOUSEHOLD_INCOME InMobiNetworkValues.ABOVE_USD_150K(150000美元以上),
InMobiNetworkValues.BELOW_USD_5K(5000美元以下),
InMobiNetworkValues.BETWEEN_USD_100K_AND_150K(100000-150000美元),
InMobiNetworkValues.BETWEEN_USD_10K_AND_15K(10000-15000美元),
InMobiNetworkValues.BETWEEN_USD_15K_AND_20K(15000-20000美元),
InMobiNetworkValues.BETWEEN_USD_20K_AND_25K(20000-25000美元),
InMobiNetworkValues.BETWEEN_USD_25K_AND_50K(25000-50000美元),
InMobiNetworkValues.BETWEEN_USD_50K_AND_75K(50000-75000美元),
InMobiNetworkValues.BETWEEN_USD_5K_AND_10K(5000-10000美元),
InMobiNetworkValues.BETWEEN_USD_75K_AND_100K(75000-100000美元)
用美元表示的用户家庭收入
InMobiNetworkKeys.EDUCATION InMobiNetworkValues.EDUCATION_HIGHSCHOOLORLESS(高中或以下),
InMobiNetworkValues.EDUCATION_COLLEGEORGRADUATE(本科),
InMobiNetworkValues.EDUCATION_POSTGRADUATEORABOVE(研究生及以上)

教育水平:

  • 高中或以下
  • 本科
  • 研究生及以上
InMobiNetworkKeys.ETHNICITY InMobiNetworkValues.ETHNICITY_ASIAN,
InMobiNetworkValues.ETHNICITY_HISPANIC,
InMobiNetworkValues.ETHNICITY_AFRICAN_AMERICAN,
InMobiNetworkValues.ETHNICITY_CAUCASIAN,
InMobiNetworkValues.ETHNICITY_OTHER

用户种族:

  • 亚裔
  • 拉美裔
  • 非裔美国人
  • 高加索人
  • 其它
InMobiNetworkKeys.INCOME 任何字符串类型 家庭年收入(美元)
InMobiNetworkKeys.AGE 任何字符串类型 用户年龄
InMobiNetworkKeys.INTERESTS 任何字符串类型 与用户相关的其它描述,或用户的喜好,用逗号隔开。下面提到了有效的可接受值
InMobiNetworkKeys.POSTAL_CODE 任何字符串类型 邮编(一般是5位数字)
InMobiNetworkKeys.AREA_CODE 任何字符串类型 区号(电话号码的一部分)
InMobiNetworkKeys.LANGUAGE 任何字符串类型 用户的母语(如果可知)
InMobiNetworkKeys.NATIONALITY 任何字符串类型 用户国籍
InMobiNetworkKeys.ImIdType_LOGIN InMobiNetworkValues.ImIdType_LOGIN 表示在发行者域中登录ID
InMobiNetworkKeys.ImIdType_SESSION InMobiNetworkValues.ImIdType_SESSION 表示在发行者域中会话ID
InMobiNetworkKeys.CITY 任何字符串 城市
InMobiNetworkKeys.STATE 任何字符串
InMobiNetworkKeys.COUNTRY 任何字符串 国家
InMobiNetworkKeys.LOGLEVEL InMobiNetworkValues.LOGLEVEL_NONE,
InMobiNetworkValues.LOGLEVEL_DEBUG,
InMobiNetworkValues.LOGLEVEL_ERROR
SDK的日志等级

此页面有用吗?

在本页面

上次更新时间: 22 Sep, 2020