在这里简单的介绍下怎么统计自己研发的APP 的用户活跃度,和使用量,以此来展示自己APP的用户使用量!

我们的APP都需要注入数据分析,以供我们实时的了解APP的下载和使用量提供了依据!
不过我还是更多的偏好使用Umeng 统计,但因为项目要求,需要集成百度统计,为此简单的介绍下使用!

集成开发步骤:

在百度统计Web网站https://mtj.baidu.com/web/welcome/login申请百度统计的AppKey
点击SDK下载 https://mtj.baidu.com/web/sdk/index 下载SDK 当中包括先关的jar 包
在自己的基类中添加统计的相关API

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 等

 <!-- Baidu -->
<!-- 需要申明的权限 -->
<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

<!-- Baidu meta-data -->
<!-- 您从百度网站获取的APP KEY -->
<meta-data
android:name="BaiduMobAd_STAT_ID"
android:value="7c0c6c6015" /> <!-- abcd1234 -->
<!-- 渠道商编号 -->
<meta-data
android:name="BaiduMobAd_CHANNEL"
android:value="Your Appkey Value
" /><!--自己的AppKey值 --> <!-- 是否开启错误日志统计,默认为false -->
<meta-data
android:name="BaiduMobAd_EXCEPTION_LOG"
android:value="true" />
<!-- 日志发送策略,可选值:APP_START、ONCE_A_DAY、SET_TIME_INTERVAL,默认为APP_START -->
<meta-data
android:name="BaiduMobAd_SEND_STRATEGY"
android:value="APP_START" />
<!-- 日志发送策略 为SET_TIME_INTERVAL时,需设定时间间隔(取消下行注释)。取值为1-24的整数,默认为1 -->
<!-- <meta-data android:name="BaiduMobAd_TIME_INTERVAL" android:value="" /> -->
<!-- 日志仅在wifi网络下发送,默认为false -->
<meta-data
android:name="BaiduMobAd_ONLY_WIFI"
android:value="false" />
<!-- 是否获取基站位置信息 ,默认为true -->
<meta-data
android:name="BaiduMobAd_CELL_LOCATION"
android:value="true" />
<!-- 是否获取GPS位置信息,默认为true -->
<meta-data
android:name="BaiduMobAd_GPS_LOCATION"
android:value="true" />
<!-- 是否获取WIFI位置信息,默认为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 然后再清单文件中进行声明

<application
android:name="com.wly.frame.DemoApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/App_name"
android:theme="@style/AppTheme" >

经过测试也是可以统计的!不知是否是因为 百度统计的更新!还是什么,在此也没有做更多的了解!如果读者发现有什么问题可以告知?

统计示例:

统计Activity 界面
如果我们没有需求需要统计到具体的详细的界面我们可以直接在基类中声明统计的方法,需要注意的是,如果你在BaseClass 中声明了,切记在子类中不要声明相关统计API。

 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();
      }
      }
      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网站看到的效果就是这样!

    • 统计Fragment界面
      因为项目之前的版本问题都是使用 在BaseFragment 添加StatService.onRsume(this),StatService.onPasuse(this)API,由于生命周期的原因,造成有的界面没有统计。
      解决方式:根据百度统计的SDK 文档,使用自定义界面进行统计,即可解决该问题,所以再统计Fragment的时候我们还是注入自定义统计界面的API。

      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",)
      }
      });

      截图就不在上传了!

      其实吧,在统计数据方面我还是喜欢使用UMeng统计,不知你们觉得的呢?但是毕竟是由于项目的要求,为此在简单的使用下!

Android 集成百度统计的更多相关文章

  1. Xamarin.Android 集成百度地图SDK

    前言:趁着周六闲得没事干,赶紧搞一搞Xamarin,最近也是怪无聊的,枯燥的生活不如打几行代码带劲:好了我们进入正题 我这篇文章时参考一位大佬的博客进行改变的,当然他写的需要一定的经验才可以看得懂,我 ...

  2. Android集成百度地图SDK

    本Demo中所含功能 1:定位,显示当前位置 2:地图多覆盖物(地图描点.弹出该点的具体信息) 3:坐标地址互相换算 4:POI兴趣点检索 5:线路查询(步行,驾车,公交) 6:绘制线路(OpenGL ...

  3. android 集成百度地图

    一.下载百度地图为我们提供的所有DEMO. 在这里边我选的是一键下载. 二.下载后有两个项目一个是用于eclipse.另一个是android studio.我选的是android studio. 我用 ...

  4. Android集成百度地图详细步骤和错误问题

    先看要实现的效果 第一步, 下载SDK,基础配置,百度开发文档很详细,直接附上链接http://lbsyun.baidu.com/index.php?title=androidsdk/guide/cr ...

  5. Android集成百度地图

    1. 百度地图api Android定位SDK Android地图SDK Android地图SDK<------

  6. Android 开发之集成百度地图的定位与地图展示

    app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,近期也在做定位功能,可是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了非常长时间来研究 ...

  7. android使用百度app分享,app统计出现的异常,FrontiaApplication类

    想在app里加入百度分享和百度统计.查看了百度移动统计的文档后下载官网给的demo.参照demo给出的代码给自己的app加入代码.以上步骤比较简单.不细说,下面说下此过程需要注意的一些点,不然会引发异 ...

  8. Android 友盟统计的集成与使用(包含多渠道打包配置)

    前言 app上线后,一般公司都希望跟踪app在市场上的使用情况.包括新增用户.活跃用户.渠道信息.错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品.这些都可以通过集成友盟 ...

  9. Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误

    Android Studio 项目中集成百度地图SDK报以下错误: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu ...

随机推荐

  1. 在Keras中使用tensorboard可视化acc等曲线

    1.使用tensorboard可视化ACC,loss等曲线 keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq= 0 , wri ...

  2. TensorFlow GPU 的使用

    一.TensorFlow 设备分配 1.设备分配规则 If a TensorFlow operation has both CPU and GPU implementations, the GPU d ...

  3. Web前端测试要点

    Web前端测试维度: 功能性:功能准确性.兼容性 易用性:易学性.易理解性.易操作性.吸引性 可靠性:成熟性.容错性.稳定性.可恢复性.安全性 可移植性:适应性.易安装性.兼容性 可维护性:易分析性. ...

  4. PHP Variable handling 函数

    Variable handling 函数: boolval — 获取变量的布尔值debug_zval_dump — 将内部zend值的字符串表示转储为输出doubleval — floatval 的别 ...

  5. C# 父窗体与子窗体之间委托

    先实例化子窗体jobForm,然后让 jobForm.TransfEvent += job_TransfEvent;显示子窗体 if (jobForm.DialogResult != DialogRe ...

  6. JDBC(4)-Result结果集

    1.Result结果集的引入 当我们查询数据库时,返回的是一个二维的结果集,我们这时候需要使用ResultSet来遍历结果集,获取每一行的数据. 2.使用Result遍历查询结果 boolean ne ...

  7. Struts2注解详解

    一,引入支持Struts2支持注解开发jar包: struts2-convention-plugin-2.1.8.1.jar(支持Struts2框架注解开发的jar包) 二,Struts2使用注解开发 ...

  8. [PY3]——heap模块 和 堆排序

    heapify( ) heapify()函数用于将一个序列转化为初始化堆 nums=[16,7,3,20,17,8,-1] print('nums:',nums) show_tree(nums) nu ...

  9. yum -y update 报错:GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

    用的是centos6.5的镜像,yum源太老了,修改了之后想更新一下: yum -y update 执行报错: warning: rpmts_HdrFromFdno: Header V3 RSA/SH ...

  10. 关于windowsServer编程

    1.关于windowsServer编程