统计 可以很方便的给我们的程序 带来很多的参考;可以直观的了解我们的产品在市场的使用情况:下面简单谈谈 友盟在项目中的使用:简单、快速。号称三分钟快速集成完成基本功能。
友盟统计:
http://www.umeng.com/
友盟官方集成文档::
http://dev.umeng.com/analytics/android-doc/integration/
简单集成步骤:(环境:AndoridStuido)
#统计基础
##1:申请Key
考虑申请Key的操作简单,这里我就不多说了。
##2:下载SDK,配置项目依赖库
配置 bulid.gradle
A:直接配置:不需要添加到lib包中:
在Gradle依赖中添加:
dependencies {
compile 'com.umeng.analytics:analytics:latest.integration'
}
如果无法正常集成请添加如下代码 :
allprojects {
repositories {
mavenCentral()
}
}
B:在lib中配置:
在下载的sdk中找到(目前我下载的是):umeng-analytics-v6.0.9.jar copy到lib下;
然后选中架包:右键–>Add As Library… 即可。
##3:配置Key: Manifest.xml文件中配置:
添加权限 +配置Key
……
注意:友盟的配置在application标签中
YOUR_APP_KEY:对应的步骤1中个人申请的:AppKey (唯一的:每一个应用对应一个AppKey)
Channel ID:对应的友盟的渠道;例如:UMENG_CHANNEL 或者wandoujia或者360shouji 等;
说明(可以不用关注):
A:一个App目前只支持一个AppKey:也就是一个应用只能使用一个友盟统计。
B:这个是在Manifest.xml中配置友盟的AppKey;
C:这个“READ_PHONE_STATE”权限需要在程序中判断是否开启;没有开启需要提示开启。
READ_PHONE_STATE:是友盟用来获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户,这个实现我们不用管;如果个人想获取手机的唯一标识请移步:http://blog.csdn.net/u013472738/article/details/72851227 最后一个内容查看。
##4:项目代码配置:
在每个Activity中的方法onResume() 和onPause()方法中 添加:
//TJ:添加友盟
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
注意A: 如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计,导致启动次数异常增高。
如:activityA extends activityMain(){…}
那么只需要在:activityMain的Activity 中添加 统计 即可;activityA的Activity可以不用添加。
注意B:
如果开发者调用Process.kill或者System.exit之类的方法杀死进程,请务必在此之前调用MobclickAgent.onKillProcess(Context context)方法,用来保存统计数据。
注意C:
有唯一性:单个手机ID唯一:同一个手机多次安装/使用;仅记录了一次安装/使用。
------------完成以上四步基本操作 即可实现基本的新增、活跃、启动、留存等数据统计。------------
#基础扩展:
##5:配置Key: 代码中配置AppKey:
需要在程序入口(如:Application全局类)中配置可以使用:
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模式
例如:
在Application全局类的OnCreate()方法中添加:
MobclickAgent. startWithConfigure(new MobclickAgent.UMAnalyticsConfig(this,"Appkey","Wandoujia") );
##6:计数事件
在友盟的App应用中的“概况”中有很多供我们使用的辅助的统计功能:
下面简单举例:自定义事件(计数、计算事件):计数
图1:添加事件说明:
图2:添加成功:
项目中点击事件计数友盟统计添加代码:
A:简单的一个ID对应一个事件:
MobclickAgent.onEvent(mContext, “TestID”);// 事件ID
B:一个ID对应多个事件:
Map map_ekv0 = new HashMap();
map_ekv0.put(“key1” , “value1”);//TJ:这里键和值1。
map_ekv0.put(“key2” , “value2”);//TJ:这里键和值2。
MobclickAgent.onEvent(mContext, “TestID”, map_ekv0);//TJ:注意:Key/Value
这样在友盟一个ID:TestID 就对应两个键值对了;代码生效后:在事件:详情–>查看。
详细参考:友盟SDK中的类:AnalyticsHome.java
贴出简单代码:
public class AnalyticsHome extends Activity {
private Context mContext;
private final String mPageName = "AnalyticsHome";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.umeng_example_analytics);
mContext = this;
MobclickAgent.setDebugMode(true);
// SDK在统计Fragment时,需要关闭Activity自带的页面统计,
// 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
MobclickAgent.openActivityDurationTrack(false);
// MobclickAgent.setAutoLocation(true);
// MobclickAgent.setSessionContinueMillis(1000);
// MobclickAgent.startWithConfigure(
// new UMAnalyticsConfig(mContext, "4f83c5d852701564c0000011", "Umeng",
// EScenarioType.E_UM_NORMAL));
MobclickAgent.setScenarioType(mContext, EScenarioType.E_UM_NORMAL);
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(mPageName);
MobclickAgent.onResume(mContext);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd(mPageName);
MobclickAgent.onPause(mContext);
}
/**
* android:onClick="onButtonClick"
*
* @param view
*/
public void onButtonClick(View view) {
int id = view.getId();
switch (id) {
case R.id.umeng_example_analytics_event_cc:
List keyPath = new ArrayList();
keyPath.add("one");
keyPath.add("two");
keyPath.add("tree");
MobclickAgent.onEvent(mContext, keyPath, 20, "label");
break;
case R.id.umeng_example_analytics_event:
MobclickAgent.onEvent(mContext, "click");
MobclickAgent.onEvent(mContext, "click", "button");
break;
case R.id.umeng_example_analytics_ekv:
Map map_ekv = new HashMap();
map_ekv.put("type", "popular");
map_ekv.put("artist", "JJLin");
MobclickAgent.onEvent(mContext, "music", map_ekv);
break;
case R.id.umeng_example_analytics_duration:
Map map_value = new HashMap();
map_value.put("type", "popular");
map_value.put("artist", "JJLin");
MobclickAgent.onEventValue(this, "music", map_value, 12000);
break;
}
}
添加渠道只能在mainfest里设置?
当然不是,除了在mainfest通过来设置渠道ID,你还可以在Activity中配置,只需在程序启动时的Activity中调用此接口:AnalyticsConfig.setChannel(String channel)就可以实现。
小建议:可以使用20位以内的英文或数字为渠道命名(不建议使用中文命名)
添加了新的渠道,安装包已经发出去了,这个渠道却没有显示
这个问题真的不是我们的工具有问题,是你对友盟的规则还不了解啊。在添加了新的渠道,友盟后台在收到了该渠道包的启动日志,经过解析之后,才会出现该渠道的信息。所以,如果你的新渠道没有显示,那不是友盟产品的问题,因为还没有人安装这个渠道包并启动呢。怎么解决呢?你可以使用一台新的设备去安装这个新的渠道包,启动之后,友盟后台就会出现这个渠道啦。
注意:一定要用新的设备,因为每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。另外,集成测试的数据不会出现在正常数据里,所以新设备也不能是测试设备。
OK后续会持续完善学习:欢迎指正…
A:flurry统计 : 个人认为国际上相对好用的统计,O(∩_∩)O哈哈~
B:友盟统计: 国内比较强大且好用的统计。
C:极光推送: 主要推送功能比较完善简单。
D:个推: 一个统计。
E:51.la: 针对IP(web页面)统计的一个统计:添加前需要页面支持。
F:CNZZ : 很早和友盟合并了;导致友盟叫:友盟+;不错O(∩_∩)O哈哈~
等…