zoukankan      html  css  js  c++  java
  • Android应用公布后的统计——百度移动统计的应用

    一个App公布到各个渠道之后,我们须要採集不同渠道的一些信息,比方app在执行过程中产生的一些异常信息,app在各个android版本号的分布,以及各个app版本号的分布,各渠道的用户数,用户忠诚度等等信息。

    这一切,我们能够使用百度移动统计来实现。

    首先,你必须有百度开发人员的账号,之后到http://developer.baidu.com/console#app/project创建一个project。如图我们创建了一个testproject
    这里写图片描写叙述

    之后点击testproject。记录api key
    这里写图片描写叙述

    然后点击左边菜单的端服务Frontia,设置移动统计的功能

    这里写图片描写叙述

    加入移动统计懊悔出现例如以下界面
    这里写图片描写叙述

    复制ReportID作为兴许调用该功能使用的一个值。点击查看统计,就可以查看一些统计信息。当然此时里面什么信息都没有,我们加入了统计功能后这里便会有信息

    这里写图片描写叙述

    然后去下载sdk。http://developer.baidu.com/frontia/sdk,选择移动统计-Android点击下载sdk,将下载的文件中的FrontiaDemo/libs下的Baidu-Frontia-Android-2.0.7.jar拷到项目libs文件夹下,不要拷贝libs/Baidu-Frontia-Android-2.0.8.jar,測试过,该jar有问题。执行的时候会找不到一个类,所以我们拷demo文件中的jar

    加入程序执行的权限

        <!-- Frontia框架的公共权限 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
        <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
    
        <!-- FrontiaPush 和FrontiaStatistics 须要的权限 -->
        <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
    

    实现一个Application的子类完毕初始化

    public class App extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            FrontiaApplication.initFrontiaApplication(getApplicationContext());
        }
    }
    

    在manifest文件中指定我们的application,包名改成自己项目的包名

     android:name=".app.App"

    编写一个配置类,将配置用到的一些值声明在里面

    public class Config {
    
        public final static String APIKEY = "7jmaDS9xP0C56d44g0LLXCap";
        public static final String REPORT_ID = "70f9ea11c5";
        public static final String EVENT_ID = "1";//事件
    
    }
    

    编写一个基类activity,为了完毕全部activity的一些UI统计功能,复用代码。

    package cn.edu.zafu.channeldemo;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    
    import com.baidu.frontia.Frontia;
    import com.baidu.frontia.api.FrontiaStatistics;
    
    import cn.edu.zafu.channeldemo.config.Config;
    
    /**
     * User:lizhangqu(513163535@qq.com)
     * Date:2015-07-04
     * Time: 20:40
     */
    public class BaseActivity extends AppCompatActivity {
        private FrontiaStatistics mFrontiaStatistics;
    
        private static final String TAG = "BaseActivity";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            boolean isInit=Frontia.init(this.getApplicationContext(), Config.APIKEY);
            Log.d(TAG, "是否初始化成功:"+isInit);
            mFrontiaStatistics = Frontia.getStatistics();
        }
        public void onResume() {
            Log.w(TAG, "BaseActivity.OnResume()");
            super.onResume();
    
            /**
             * 页面起始(每一个Activity中都须要加入。假设有继承的父Activity中已经加入了该调用,那么子Activity中务必不能加入)
             * 不能与StatService.onPageStart一级onPageEnd函数交叉使用
             */
            mFrontiaStatistics.pageviewStart(this, this.getClass().getName());
        }
    
        public void onPause() {
            super.onPause();
            Log.w(TAG, "BaseActivity.onPause()");
    
            /**
             * 页面结束(每一个Activity中都须要加入。假设有继承的父Activity中已经加入了该调用。那么子Activity中务必不能加入)
             * 不能与StatService.onPageStart一级onPageEnd函数交叉使用
             */
            mFrontiaStatistics.pageviewEnd(this, this.getClass().getName());
        }
    }
    

    编写Activity继承这个基类Activity,并使用一些统计功能。比方异常统计,自己定义事件的统计。以及日志发送策略的设置等等。具体见凝视。

    package cn.edu.zafu.channeldemo;
    
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    import com.baidu.frontia.Frontia;
    import com.baidu.frontia.api.FrontiaStatistics;
    
    import cn.edu.zafu.channeldemo.config.Config;
    import cn.edu.zafu.channeldemo.util.AppUtil;
    
    public class MainActivity extends BaseActivity {
        private FrontiaStatistics mFrontiaStatistics;
        private Button btnException;
        private Button btnEvent;
        private Button btnEventDuration;
        private Button btnEventStart;
        private Button btnEventEnd;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mFrontiaStatistics = Frontia.getStatistics();
            String channel=AppUtil.getMetaValue(this,"CHANNEL_NAME");
            Log.d("TAG",channel);
            mFrontiaStatistics.setAppDistributionChannel(channel, true);//设置应用公布渠道
            mFrontiaStatistics.setSessionTimeout(50);//測试时,能够使用1秒钟session过期,这样不断的启动退出会产生大量日志。
            mFrontiaStatistics.enableExceptionLog();//开启异常日志
            mFrontiaStatistics.setReportId(Config.REPORT_ID);//reportId必须在mtj站点上注冊生成,该设置也能够在AndroidManifest.xml中填写
    
            //第一个參数为日志发送策略
            //第二个參数为日志发送策略设备周期性发送
            //第三个參数为日志发送间隔
            //第四个參数为是否仅仅在wifi情况下发送日志
            btnException = (Button) findViewById(R.id.btn_excep);
            btnEvent = (Button) findViewById(R.id.btn_event);
            btnEventDuration = (Button) findViewById(R.id.btn_event_duration);
    
            btnEventStart = (Button) findViewById(R.id.btn_event_start);
            btnEventEnd = (Button) findViewById(R.id.btn_event_end);
    
            btnException.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    //此处10/0。会发生异常。用来验证上传异常日志
                    Log.d("TAG", 10 / 0 + "");
                }
            });
    
            btnEvent.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
    
                    FrontiaStatistics.Event event = new FrontiaStatistics.Event(Config.EVENT_ID, "事件1");
                    mFrontiaStatistics.logEvent(event);
                }
            });
    
            /**
             * 自己定义事件的第一种方法,写入某个事件的持续时长
             */
            btnEventDuration.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
    
                    FrontiaStatistics.Event event = new FrontiaStatistics.Event(Config.EVENT_ID, "事件1");
                    event.setDuration(100); // 事件时长100毫秒
                    mFrontiaStatistics.logEventDuration(event);
    
                }
            });
    
    
            //自己定义事件的另外一种方法:事件的时长由Frontia统计,而不是开发人员统计。
    
            final FrontiaStatistics.Event asyncEvent = new FrontiaStatistics.Event(Config.EVENT_ID, "事件1");
    
            btnEventStart.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    mFrontiaStatistics.eventStart(asyncEvent);
                }
            });
    
    
            //自己定义事件的另外一种方法,自己定义该事件的起始时间和结束时间
    
            btnEventEnd.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    mFrontiaStatistics.eventEnd(asyncEvent);
                }
            });
        }
    
    }
    

    到统计后台加入我们的自己定义事件的id和名称
    这里写图片描写叙述

    加入完毕后就是这样子的

    这里写图片描写叙述

    完毕之后就能够生成渠道包并进行相应的统计功能了。

    生成渠道包见上一篇博文Android应用公布的准备——生成渠道包以及渠道的申请Android应用公布的准备——渠道注冊与认证

    完毕之后就能够使用android studio生成渠道包。将相应包公布到指定渠道,兴许用户安装后。就能够进行一些统计工作。比方程序异常日志。自己定义事件触发次数,持续时间,各版本号分布情况等等信息。如图
    这里写图片描写叙述

    这里写图片描写叙述

    这里写图片描写叙述

    这里写图片描写叙述

    这里写图片描写叙述

    很多其它统计信息请至后台查看。

    相关的源代码下载
    http://download.csdn.net/detail/sbsujjbcy/8869821

  • 相关阅读:
    关闭编辑easyui datagrid table
    sql 保留两位小数+四舍五入
    easyui DataGrid 工具类之 util js
    easyui DataGrid 工具类之 后台生成列
    easyui DataGrid 工具类之 WorkbookUtil class
    easyui DataGrid 工具类之 TableUtil class
    easyui DataGrid 工具类之 Utils class
    easyui DataGrid 工具类之 列属性class
    oracle 卸载
    “云时代架构”经典文章阅读感想七
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7069309.html
Copyright © 2011-2022 走看看