一个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

加入程序执行的权限


    

" data-snippet-id="ext.c5dfff1e9070a5fe2d6bc26b2cec8419" data-snippet-saved="false" data-csrftoken="GxabGEAY-5dfNLFG1mwgVNd0SSDpHvDYnQ6k" data-codota-status="done">    <!-- 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

Android应用公布后的统计——百度移动统计的应用的更多相关文章

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

    一个App发布到各个渠道之后,我们需要采集不同渠道的一些信息,比如app在运行过程中产生的一些异常信息,app在各个android版本的分布,以及各个app版本的分布,各渠道的用户数,用户忠诚度等等信 ...

  2. Android发布apk后解决百度地图不显示的问题

    今天在做Android apk发布时,发现发布后不能显示百度地图,结合网上的信息,及自己的实验,终于可以了.原来在Eclipse上直接run的是测试版本,而发布后是运行版本,两个版本的SHA1值不一样 ...

  3. Android之友盟多渠道打包与数据统计

    文章大纲 一.多渠道打包与数据统计介绍二.友盟实现多渠道打包实战三.友盟数据统计实战四.项目源码下载五.参考文章   一.多渠道打包与数据统计介绍   多渠道打包,相信很多同学都知道.在Android ...

  4. 百度统计&友盟统计

    一.百度统计 登录百度站长统计账号-->管理 --->代码获取-->复制代码,如 <script> var _hmt = _hmt || []; (function() ...

  5. 百度移动统计调用api教程,少进坑(82001错误)

    相信很多小伙伴使用了百度统计,来查看自己应用使用的情况,但是会发现百度移动统计在官网没有api调用取数据的接口, 现在我就以自己成功调用api并且成功拿到数据,将这个步骤给大家参考,(末尾有调用移动统 ...

  6. 【Android】设置android:maxLines="1"后,android:imeOptions="actionSearch"失效

    android:singleLine在API LEVEL 3已经废弃,可以用android:maxLines="1"代替. 但是测试的时候发现设置android:maxLines= ...

  7. android退出登陆后,清空之前所有的activity,进入登陆主界面

    如题: android退出登陆后,清空之前所有的activity,进入登陆主界面 在退出登陆时只需要增加一个intent标志 Intent intent_login = new Intent(); i ...

  8. Android Studio安装后第一次进不去

    Android Studio 安装后第一次进不去,因为检查到有更新的SDK,在下载.但是呢,没有FQ的情况下,无法下载下来,所以就卡住了. 那么解决方案就是让 Android Studio 第一次启动 ...

  9. 转Android APP安装后不在桌面显示图标的应用场景举例和实现方法

    转http://www.cnblogs.com/allenzheng/p/4510725.html#3186608 Android APP安装后不在桌面显示图标的应用场景举例和实现方法 最近在为公司做 ...

随机推荐

  1. matlab2017a doc 关联注册码

    在 matlab 2017a 的命令行界面,输入doc **查看相关函数的帮助文档时,必须要关联注册码才可使用. 这种显然是在网络连接状况下给出的提示,也即主机处在网络连接状态,试图默认查找的网络中的 ...

  2. Swift学习笔记(1):基础部分

    目录: 分号 常量和变量 数据类型 数值型类型转换 类型别名 元组 可选类型 API版本检查 分号 Swift并不强制要求你在每条语句的结尾处使用分号( ; ),你也可以按照自己的习惯添加分号.如果在 ...

  3. [ZJOI2012]旅游 对偶图 树的直径

    Code: // luogu-judger-enable-o2 #include<cstdio> #include<iostream> #include<algorith ...

  4. linux一个网卡添加多个虚IP

    [root@localhost ~]# ifconfig bond0:0 10.0.0.202 netmask 255.255.255.255 broadcast 10.0.0.255 up 摘自:h ...

  5. 到2023年将会有超过90%的PC采用SSD硬盘

    本文转载自超能网,其他媒体转载需经超能网同意 现在买电脑或者自己装机,还有谁不要SSD硬盘吗?这个问题似乎没什么可说的,SSD硬盘各种好,装机可以说是必选了,但实际上现在的SSD适配率并没有想象中那么 ...

  6. python web开发 框架 模板 MVC

    我是跟着廖雪峰老师学习的,对于我这样的纯小白来说,跟着他的网站学习,简直是被妈妈抱在怀里一样无忧无虑,这样的学习本来没有记录下来的必要,但是由于我的粗心大意,经常会出现一些错误,所以我决定把这些错误记 ...

  7. 编译bash实现history的syslog日志记录

    摘要: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1763145 一 ...

  8. 云服务器 ECS Linux 系统下使用 dig 命令查询域名解析

    云服务器 ECS Linux 系统可以使用通常自带的 dig 命令来查询域名解析情况.本文对此进行简要说明. 查询域名 A 记录 命令格式: dig <域名> 比如,查询域名 www.al ...

  9. 一 SSH 无密码登陆 & Linux防火墙 & SELinux关闭

    如果系统环境崩溃.   调用/usr/bin/vim /etc/profile   SHH无密码登陆 所有要做得节点上运行   修改 host name vi /etc/sysconfig/netwo ...

  10. hdu5336XYZ and Drops

    题意:给出r*c的网格,有的网格为空.有的有水.再给出一个爆炸点,从这个点向四周爆出四个水滴,若碰到水则融为一体,若碰到其它水滴直接跑过去互不影响.每秒可跑一格,若水中水滴数量超过4则爆开.问T秒后网 ...