集成步骤
详细步骤详见官方文档:http://dev.umeng.com/analytics/android-doc/integration
报表解读:http://dev.umeng.com/analytics/reports/dashboard
1、下载并导入SDK
- 只需将jar包拷到 libs 子目录下即可
2、配置清单文件
- 添加权限,填写appkey,填写channel(渠道,非必须)
3、代码中使用
- 在所有的Activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法
- 详细统计API详见官方文档
演示代码
public class MainActivity 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);
// 统计Fragment时,需要关闭Activity自带的页面统计,这样将不会再自动统计Activity。
// 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
MobclickAgent.openActivityDurationTrack(false);
// MobclickAgent.setAutoLocation(true);
// MobclickAgent.setSessionContinueMillis(1000);
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(mPageName);//统计页面(针对页面,页面可能是Activity 也可能是Fragment或View)
MobclickAgent.onResume(mContext);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd(mPageName);
MobclickAgent.onPause(mContext);
}
//******************************************************************************************
public void onButtonClick(View view) {
int id = view.getId();
switch (id) {
case R.id.umeng_example_analytics_signin:// 用户登录
MobclickAgent.onProfileSignIn("example_id");//用户账号ID
MobclickAgent.onProfileSignIn("WB", "userID");//第一个参数为:账号来源。当用户使用第三方账号登录时可以这样统计
break;
case R.id.umeng_example_analytics_signoff:// 用户退出
MobclickAgent.onProfileSignOff();
break;
case R.id.umeng_example_analytics_event://普通事件:统计事件发生次数
MobclickAgent.onEvent(mContext, "enent_bqt");//后一个参数eventId 为当前统计的【事件的ID】,是在友盟后台注册的
break;
case R.id.umeng_example_analytics_ekv://多属性事件:统计点击行为各属性被触发的次数
Map<String, String> map_ekv = new HashMap<String, String>();
map_ekv.put("type", "白乾涛");
map_ekv.put("quantity", "3");
MobclickAgent.onEvent(mContext, "enent_bqt2", map_ekv);
break;
//******************************************************************************************
case R.id.umeng_example_analytics_event_begin://事件开始,不推荐
MobclickAgent.onEventBegin(mContext, "music");
MobclickAgent.onEventBegin(mContext, "music", "one");
Map<String, String> map = new HashMap<String, String>();
map.put("type", "popular");
map.put("artist", "JJLin");
MobclickAgent.onKVEventBegin(mContext, "music", map, "flag0");
break;
case R.id.umeng_example_analytics_event_end://事件结束,不推荐
MobclickAgent.onEventEnd(mContext, "music");
MobclickAgent.onEventEnd(mContext, "music", "one");
MobclickAgent.onKVEventEnd(mContext, "music", "flag0");
break;
case R.id.umeng_example_analytics_social://社交统计
UMPlatformData platform = new UMPlatformData(UMedia.SINA_WEIBO, "user_id");//参数:支持的平台,用户ID
platform.setGender(GENDER.MALE); // 性别,optional(可选)
platform.setWeiboId("weiboId"); // optional
MobclickAgent.onSocialEvent(this, platform);
break;
case R.id.umeng_example_analytics_duration://数值型统计
Map<String, String> map_value = new HashMap<String, String>();//当前事件的属性和取值
map_value.put("type", "popular");
map_value.put("artist", "JJLin");
MobclickAgent.onEventValue(this, "music", map_value, 12000);//最后一个参数为:当前事件的数值
break;
//******************************************************************************************
case R.id.umeng_example_analytics_make_crash://模拟程序崩溃
"123".substring(10);
break;
case R.id.umeng_example_analytics_js_analytic://WebView统计
startActivity(new Intent(this, WebviewAnalyticActivity.class));
break;
case R.id.umeng_example_analytics_fragment_stack://统计 Fragment 页面(Stack)
startActivity(new Intent(this, FragmentStackActivity.class));
break;
case R.id.umeng_example_analytics_fragment_tabs://统计 Fragment 页面( Tab )
startActivity(new Intent(this, FragmentTabsActivity.class));
break;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Hook();
return true;
}
return super.onKeyDown(keyCode, event);
}
// 对于好多应用,会在程序中杀死 进程,这样会导致我们统计不到此时Activity结束的信息,
// 对于这种情况需要调用 MobclickAgent.onKillProcess 方法,保存一些页面调用的数据。正常的应用是不需要调用此方法的。
private void Hook() {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setPositiveButton("退出应用", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//如果开发者调用 Process.kill 或者 System.exit 之类的方法杀死进程,请务必在此之前调用此方法,用来保存统计数据
MobclickAgent.onKillProcess(mContext);
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
}
});
builder.setNeutralButton("后退一下", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
finish();
}
});
builder.setNegativeButton("点错了", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
builder.show();
}
}