在这里简单的介绍下怎么统计自己研发的APP 的用户活跃度,和使用量,以此来展示自己APP的用户使用量!
我们的APP都需要注入数据分析,以供我们实时的了解APP的下载和使用量提供了依据!
不过我还是更多的偏好使用Umeng 统计,但因为项目要求,需要集成百度统计,为此简单的介绍下使用!
集成开发步骤:
import com.baidu.mobstat.StatService;
import com.wly.frame.utils.AppManager;
import android.app.Activity;
public class BaseActivity extends Activity {
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
AppManager.getAppManager().addActivity(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
StatService.onResume(this);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
StatService.onPause(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
AppManager.getAppManager().finishActivity(this);
}
}
在AndroidManifest.xml 清单文件中声明相关权限 渠道号,Appkey 等
<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.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
在 meta-data 中声明相关的AppKey
<meta-data
android:name="BaiduMobAd_STAT_ID"
android:value="7c0c6c6015" />
<meta-data
android:name="BaiduMobAd_CHANNEL"
android:value="Your Appkey Value
" />
<meta-data
android:name="BaiduMobAd_EXCEPTION_LOG"
android:value="true" />
<meta-data
android:name="BaiduMobAd_SEND_STRATEGY"
android:value="APP_START" />
<meta-data
android:name="BaiduMobAd_ONLY_WIFI"
android:value="false" />
<meta-data
android:name="BaiduMobAd_CELL_LOCATION"
android:value="true" />
<meta-data
android:name="BaiduMobAd_GPS_LOCATION"
android:value="true" />
<meta-data
android:name="BaiduMobAd_WIFI_LOCATION"
android:value="true" />
Application 的声明设置
让自己的Application extends FrontiaApplication
public class DemoApplication extends FrontiaApplication{
@Override
public void onCreate(){
super.onCreate();
}
}
在百度统计集成的SDK 文档中并没有阐述这点,本人是抱着试试的态度,然后就没有 继承 FrontiaApplication 这个东西!而是直接使用 DemoApplication extends Application 然后再清单文件中进行声明
"com.wly.frame.DemoApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/App_name"
android:theme="@style/AppTheme" >
经过测试也是可以统计的!不知是否是因为 百度统计的更新!还是什么,在此也没有做更多的了解!如果读者发现有什么问题可以告知?
统计示例:
public class BaseActivity extends Activity {
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
AppManager.getAppManager().addActivity(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
StatService.onResume(this);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
StatService.onPause(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
AppManager.getAppManager().finishActivity(this);
}
}
StatService.onResume(this);
StatService.onPause(this);
统计的是具体的包名。在Web网站观看的效果如下图
StatService.onPageStart(Context context, Sring pageName);
StatService.onPageEnd(Context context, Sring pageName);
public class FounActivity extends Activity implements OnClickListener{
private TextView tv_back;
private TextView tv_title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fount);
initView();
}
private void initView() {
tv_back = (TextView) findViewById(R.id.tv_back);
tv_back.setOnClickListener(this);
tv_title = (TextView) findViewById(R.id.tv_title);
tv_title.setText("发现");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_back:
finish();
break;
default:
break;
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
StatService.onPageStart(this, "发现界面");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
StatService.onPageEnd(this, "发现界面");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
这样的话就是统计的具体界面在Web网站看到的效果就是这样!
public class SportFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_contact_list, container, false);
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
StatService.onPageStart(getActivity, "运动界面");
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
StatService.onPageEnd(getActivity, "运动界面");
}
}
这样就可以统计每个预览的Fragment 界面了。
自定义事件
统计某个按钮的热度,我们可以使用自定义事件,首先我们需要在Web 网站中注册并添加自定义事件,具体的操作就不在过多的赘述了,如果还有什么不了解可以参考百度 统计的SDK文档
API:
@params event_id 为在网站注册的点击事件id,二者必须对应
StatService.onEvent(Context context, String event_id, String label, int acc)
实例:
button.setOnClickListener(new View.onClickListener(){
@Override
public void onClick(View v) {
StatService.onEvent(MainActivity.this,"buildRequest","update",1)
}
});
截图就不在上传了!
其实吧,在统计数据方面我还是喜欢使用UMeng统计,不知你们觉得的呢?但是毕竟是由于项目的要求,为此在简单的使用下!