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

转载于:https://www.cnblogs.com/zhchoutai/p/7069309.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值