Android应用发布后的统计——百度移动统计的应用

一个App发布到各个渠道以后,咱们须要采集不一样渠道的一些信息,好比app在运行过程当中产生的一些异常信息,app在各个android版本的分布,以及各个app版本的分布,各渠道的用户数,用户忠诚度等等信息。这一切,咱们可使用百度移动统计来实现。java

首先,你必须有百度开发者的帐号,以后到http://developer.baidu.com/console#app/project建立一个工程,如图咱们建立了一个test工程 
这里写图片描述android

以后点击test工程,记录api key 
这里写图片描述api

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

这里写图片描述

添加移动统计后悔出现以下界面 
这里写图片描述app

复制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文件里的jarasync

添加程序运行的权限ide

 
<!-- 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> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

实现一个Application的子类完成初始化函数

 
public class App extends Application { @Override public void onCreate() { super.onCreate(); FrontiaApplication.initFrontiaApplication(getApplicationContext()); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在manifest文件里指定咱们的application,包名改为本身项目的包名测试

android:name=".app.App"
  • 1

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

public class Config { public final static String APIKEY = "7jmaDS9xP0C56d44g0LLXCap"; public static final String REPORT_ID = "70f9ea11c5"; public static final String EVENT_ID = "1";//事件 } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

编写一个基类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()); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

编写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); } }); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94

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

添加完成后就是这样子的

这里写图片描述

完成以后就能够生成渠道包并进行相应的统计功能了。生成渠道包见上一篇博文Android应用发布的准备——生成渠道包以及渠道的申请Android应用发布的准备——渠道注册与认证

完成以后就可使用android studio生成渠道包,将对应包发布到指定渠道,后续用户安装后,就能够进行一些统计工做,好比程序异常日志,自定义事件触发次数,持续时间,各版本分布状况等等信息。如图 
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

更多统计信息请至后台查看。

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

相关文章
相关标签/搜索