友盟+搜索

{{errorMsg}}

Android 在线参数(OnlineConfig) SDK 集成指南

版本: v1.0.0

导入SDK所需jar包

下载最新版SDK的zip包,将其中的libs 文件夹合并到本地工程libs子目录下,再在Eclipse里面刷新一下工程。

注意

  • Eclipse ADT 17 以下版本用户,可以使用老方式添加工程引用。 Eclipse用户鼠标右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add External JARs... 选择指向jar的路径,点击OK,即导入成功。 如果引用过程中出现问题, 可以参考Dealing with dependencies in Android projects.

  • Android Studio 以及Gradle 用户请参考如何引用第三方类库说明, 暂不提供 maven 支持。

  • 本SDK需要最新版本的 android-support-v4.jar 支持包。请在工程中添加 android-support-v4.jar 支持包。 关于v4 支持包说明, 请参考 http://developer.android.com/tools/support-library/features.html#v4 .

 使用SDK包中的Demo进行调试(可选)

  1. 导入SDK包中Demo的代码到Eclipse。
  2. 用添加应用时获得的AppKey替换掉Demo中默认的AppKey。
  3. 重新打包Demo。将Demo的apk包安装到测试设备上并打开。

 配置AndroidManifest.xml

 添加权限

<manifest>标签下:

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

 添加 AppKey 

<application>标签下:

<meta-data
    android:name="UMENG_APPKEY"
    android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" >
</meta-data>

说明

  • 请在 http://www.umeng.com 创建应用,获取应用对应的AppKey。
  • Channel ID的设置请参考统计分析

 添加代码,编译测试

 添加代码

 请求在线参数

在应用的主Activity onCreate() 函数中请求在线参数

OnlineConfigAgent.getInstance().updateOnlineConfig(mContext);

获取在线参数

请求在线参数后,在线参数被缓存到本地,可以通过如下接口来获取在线参数值,key表示要获取的在线参数, value表示返回的在线参数值


String value = OnlineConfigAgent.getInstance().getConfigParams(mContext, key);

 设置Debug模式

在应用的主Activity 的onCreate 函数添加

OnlineConfigAgent.getInstance().setDebugMode(true);

说明

  • 默认是在非Debug的模式下,在Debug模式下,可以输出日志信息。
  • 默认在非Debug模式下,是受请求时间间隔的限制的,即两次请求的时间间隔应该大于10分钟, 而在Debug模式下,是不受时间间隔限制的。

 设置和移除在线参数的监听器

可以自己设置和移除在线参数的监听器,并且在监听器的回调中获取在线参数数据。

设置在线参数的监听器

UmengOnlineConfigureListener configureListener = new UmengOnlineConfigureListener() {
    @Override
    public void onDataReceived(JSONObject json) {
    // TODO Auto-generated method stub
    OnlineConfigLog.d("OnlineConfig", "json="+json);
    }  
}
OnlineConfigAgent.getInstance().setOnlineConfigListener(configureListener);

移除在线参数的监听器

OnlineConfigAgent.getInstance().removeOnlineConfigListener();
  •  编译

    添加代码完毕后,编译apk包。然后将apk包安装到联网的测试设备上并打开。

    说明

    如果在编译和调试过程中遇到问题(例如混淆或无法编译),请参考步骤1.6中常见问题的处理方法。

     常见问题

     后台操作

    • 能够通过友盟的后台给对应AppKey的应用添加在线参数,进入http://www.umeng.com/apps, 选中需要操作的应用,在组件的在线参数中进行操作

      Qq截图20150626134915

     编译问题

    • 在测试时可以设置调试模式

      注意 正式发布应用时,请务必将本开关关闭,避免影响用户正常使用APP。

      OnlineConfigAgent.getInstance().setDebugMode(boolean debug)
      
      

      打开调试模式后,可以在logcat里面看到比较详细的log信息,以方便调试和定位问题。

    • 如果APP进行了混淆,请添加:

      
      
      -keepclassmembers class * {
              public (org.json.JSONObject);
      }
      
      -keep class com.umeng.onlineconfig.OnlineConfigAgent {
              public <fields>;
      public <methods>; } -keep class com.umeng.onlineconfig.OnlineConfigLog { public <fields>;
      public <methods>; } -keep interface com.umeng.onlineconfig.UmengOnlineConfigureListener { public <methods>; }
    • 如果在编译或者混淆的过程中遇到类似下面的错误,

      Proguard returned with error code 1. See console
      Note: there were 371 duplicate class definitions.
      Warning: org.android.agoo.client.ElectionHelper: can't find referenced field 'long firstInstallTime' in library class android.content.pm.PackageInfo
      Warning: org.android.agoo.client.MessageService: can't find referenced field 'java.util.concurrent.TimeUnit MINUTES' in library class java.util.concurrent.TimeUnit
      Warning: there were 2 unresolved references to library class members.
      You probably need to update the library versions.
      (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)
      java.io.IOException: Please correct the above warnings first.
      at proguard.Initializer.execute(Initializer.java:369)
      at proguard.ProGuard.initialize(ProGuard.java:212)
      at proguard.ProGuard.execute(ProGuard.java:87)
      at proguard.ProGuard.main(ProGuard.java:484)
      Warning: 
      
      

      请将Android 工程对Android SDK的引用 设为最新版本(Eclipse-> 工程右键-> 属性-> Android-> Android4.3 或最新版SDK)。 minSdkVersion可以设为8.

    • 完全实时更新对用户的网络环境要求较高,我们通过对用户的使用考虑,目前在统计最新的sdk和在线参数sdk里面,在线参数的线上请求时间默认是10分钟,如需调整请联系support@umeng.com

     技术支持

    如果还有问题,请把您的问题发邮件至support@umeng.com或者联系客服:联系客服 (在线时间:工作日10:00~18:00),我们会尽快回复您。

    如果可以附上相关日志,我们可以更好的帮助您解决问题,通过OnlineConfigAgent.getInstance().setDebugMode(boolean debug)打开Debug模式,在logcat里查看log,发布应用时请去掉。