为了以后方便,在此记录一下具体步骤:(大多信息来自友盟集成文档:http://dev.umeng.com/analytics/android-doc/integration?spm=0.0.0.0.ZOAGcu#3_6)
一、 集成友盟SDK之前,您首先需要到友盟官网(http://dev.umeng.com/analytics/android-doc/www.umeng.com)注册并且添加新应用,获得Appkey
二、下载SDK,添加,如果是android Studio在Gradle依赖中添加:
dependencies {
compile 'com.umeng.analytics:analytics:latest.integration'
}
三、以上是准备工作,基本配置是:
1:场景类型设置接口:MobclickAgent.setScenarioType(Context context, EScenarioType etype)
2:etype是官方场景,有如下场景:
EScenarioType. E_UM_NORMAL 普通统计场景类型
EScenarioType. E_UM_GAME 游戏场景类型
EScenarioType. E_UM_ANALYTICS_OEM 统计盒子场景类型
EScenarioType. E_UM_GAME_OEM 游戏盒子场景类型
3:在Manifext.xml中配置
……
需要替换appKey,Channel ID 替换为您应用的推广渠道名称
例如:在豌豆荚渠道推广此包,代码示例:
非常重要:每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。也可使用集成测试功能进行测试,了解更多集成测试请点击这里(http://dev.umeng.com/analytics/functions/testmode)
4:在代码中配置渠道id
MobclickAgent. startWithConfigure(UMAnalyticsConfig config)
UMAnalyticsConfig(Context context, String appkey, String channelId)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType,Boolean isCrashEnable)
构造意义:
String appkey:官方申请的Appkey
String channel: 渠道号
EScenarioType eType: 场景模式,包含统计、游戏、统计盒子、游戏盒子
Boolean isCrashEnable: 可选初始化. 是否开启crash模式
注意:一个包中只能添加一个渠道,多个渠道需要打多个包。开发者新增渠道需要在工程manifest中或者activity中调用接口添加我们的渠道信 息,友盟后台没有添加渠道的地方。您可以使用Gradle实现多渠道打包
四、Android Studio gradle 多渠道打包配置(摘自:http://bbs.umeng.com/thread-9119-1-1.html)
以友盟的渠道统计为例,渠道信息一般在 AndroidManifest.xml中修改以下值:
productFlavors {
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
}
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
有的项目下会有graldew.bat这个文件,你就可以输入这个命令:gradlew assembleRelease
就可以一次性生成所有的渠道包了
不过我一般不建议大家使用这个命令,gradlew这个命令的gralde的版本无法控制,有时候会莫名其妙的下载老版本的gradle
所以我个人推荐大家使用以下的用法。
在每个Activity的onResume方法中调用 ,
MobclickAgent.onResume(Context)
onPause方法中调用
MobclickAgent.onPause(Context)
publicstaticvoidonProfileSignIn(String ID) ;
publicstaticvoidonProfileSignIn(String Provider, String ID) ;
示例:
当用户使用自有账号登录时,可以这样统计:
MobclickAgent.onProfileSignIn("userID");
当用户使用第三方账号(如新浪微博)登录时,可以这样统计:
MobclickAgent.onProfileSignIn("WB","userID");
3:页面统计最佳策略:
访问页面:(http://blog.umeng.com/products/2928.html)
六、应用混淆
-keepclassmembersclass * {public (org.json.JSONObject);}
这是由于SDK中的部分代码使用反射来调用构造函数, 如果被混淆掉, 在运行时会提示"NoSuchMethod"错误。 另外,由于SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请在proguard配置文件中添加keep命令如:
-keep public class [您的应用包名].R$*{publicstatic final int *;}
把[您的应用包名] 替换成您自己的包名,如com.yourcompany.example。如果您使用5.0.0及以上版本的SDK,请添加如下命令:
-keepclassmembersenum * { publicstatic **[] values(); publicstatic ** valueOf(java.lang.String);}
更多详细信息到友盟官方网站查看,这里只是一个大概过程。