APP统计
APP统计就是统计用户使用app的各项指标,比如说日活跃量,页面打开次数,新增用户数量,用户年龄分布,用户地区分布,用户性别分布以及用户使用时间段等等。将统计出来的用户信息进行比对分析,可以服务公司的营销策略和投资策略。
目前做应用统计的公司很多,比较好的有友盟统计,它的主要功能有这些:
统计新增用户和启动次数
统计页面停留时间
统计崩溃日志
统计行为和事件
统计终端信息,比如用户区域,手机品牌,网络状态等。
友盟统计SDK开发环境的准备:
首先,获取appKey,在管理后台主页创建应用,填写信息,系统会自动生成appKey
其次,对于AndroidStudio环境,则添加gradle依赖:
dependencies {
compile 'com.umeng.analytics:analytics:latest.integration'
}
然后,在manifest文件中配置appKey,以及添加相关权限
<manifest……>
<uses-sdk android:minSdkVersion="8"></uses-sdk>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application ……> <activity ……/>
<meta-data android:value="58b7fe1aae1bf82ad4001a1d" android:name="UMENG_APPKEY"/>
<meta-data android:value="heima_store" android:name="UMENG_CHANNEL"/>
</application>
</manifest>
环境搭建完毕之后,现在开始几个常用统计的使用
1、使用MobclickAgent统计App的新增用户,并且启用debug模式,便于观察日志。由于MobclickAgent统计新增用户的原理是依据于安装app设备的设备id,所以我们尝试修改设备id,重新安装,然后查看结果。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//开启debug模式,会打印emeng的操作日志
MobclickAgent.setDebugMode(true);
}
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onStop();
MobclickAgent.onPause(this);
}
2、使用MobclickAgent统计app启动次数,分析友盟统计启动次数的原理,尝试修改后并进行验证,然后,自定义MobclickAgemnt记录app启动的时间周期,然后进行验证。
//自定义启动会话时间周期
MobclickAgent.setSessionContinueMillis(2000);
3、统计页面停留时间,有两种情况:统计Activity停留的事件和Fragment停留的时间
@Override
protected void onResume() {
super.onResume();
//记录页面启动时间点
MobclickAgent.onPageStart(getClass().getSimpleName());
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onStop();
//记录页面退出时间点
MobclickAgent.onPageEnd(getClass().getSimpleName());
MobclickAgent.onPause(this);
}
注意:如果需要对多个Activity统计停留时间,那么应该将上面的代码写到基类中。
!!!!!!!!!!!
注意:如果想统计Fragment的停留时间,这个由于友盟自身的原因,我么需要首先禁止Activity的追踪统计功能,代码乳腺下:
//设置禁用只统计Activity的停留时长
MobclickAgent.openActivityDurationTrack(false);
并且需要去掉BaseActivity中统计Activity的代码:
@Override
protected void onResume() {
super.onResume();
// MobclickAgent.onPageStart(getClass().getSimpleName());
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
// MobclickAgent.onPageEnd(getClass().getSimpleName());
MobclickAgent.onPause(this);
}
然后在Fragment界面中,添加相同的统计代码,同样的如果多个和Fragment需要统计功能,那么应该将下面的代码添加到BaseFragment中。
public class MyFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getContext());
textView.setText("我是Fragment");
textView.setTextSize(25);
textView.setTextColor(Color.GREEN);
return textView;
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(getClass().getSimpleName());
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd(getClass().getSimpleName());
}
}
4、统计崩溃错误日志
友盟会自动统计app中的崩溃日志,这个功能可以让我们及时发现错误和定位错误,及时修复bug,提示app的稳定性和用户体验。如果想关闭统计崩溃日志功能,可以这样做:
MobclickAgent.setCatchUncaughtExceptions(false);
另外,我们也将自己捕获的错误上传到Umeng进行统计分析:
public static void reportError(Context context, String error)
//或
public static void reportError(Context context, Throwable e)
5、统计行为和事件 !!!!!
在app使用行为中,有些细节的行为和事件可能需要统计,比如当发红包按钮被点击了,我们就认为这是一个发红包事件;比如当发语音按钮被点击了,我们就认为这是一个发语音的事件;再比如用户更换了头像,我们则认为这是一个换头像的行为事件。通过这些用户的使用行为分析,可以让我们更懂用户,更好地为用户服务。比如统计数据显示,用户发语音的行为非常多,那么在下一个版本中,我们可以将发语音的功能做的更易用更炫酷。
由于这些事件和行为是和我们app的业务逻辑相关联的,所以没有通用的事件行为。在我们自己的app中,我们需要自己定义需要统计的事件和行为。
Umeng提供了2种类型的事件统计:
- 计数事件,我们只关心该事件行为的数量,比如统计一首歌被播放了多少次;
- 计算事件,我们关心该事件行为的持续时间,比如统计一个人听某首歌听了多久;
比如,我们想统计一个发红包的按钮被点击的事件行为,并且,这是一个计数事件,我们需要在后台添加这个id为fahongbao的计数事件,就可以查看统计的数据了。代码如下:
//当按钮点击的时候,说明用户想发红包,那么则记录此行为 MobclickAgent.onEvent(getContext(),"fahongbao");
比如,我们想统计林俊杰的<<江南>>被用户听了多久,那么这就是一个计算事件。代码如下:
//我们计算好的播放时间
int duration = 500000;
String eventId = "hotsong";//热歌榜
//事件描述信息,比如歌手是谁,歌曲名称
Map<String,String> eventDesc = new HashMap<String, String>();
eventDesc.put("singer","JJLin");
eventDesc.put("song","江南");
MobclickAgent.onEventValue(getContext(),eventId,eventDesc,duration);
APP统计的更多相关文章
- android使用百度app分享,app统计出现的异常,FrontiaApplication类
想在app里加入百度分享和百度统计.查看了百度移动统计的文档后下载官网给的demo.参照demo给出的代码给自己的app加入代码.以上步骤比较简单.不细说,下面说下此过程需要注意的一些点,不然会引发异 ...
- 自行搭建网站和APP统计平台
做过网站运营分析的朋友,一定知道 Google 统计.友盟统计以及百度统计,它们都是非常优秀的统计平台. 但不管怎么样,数据并没有掌握在网站拥有者的手中.有时候,某些业务场景不适合使用第三方统计平台, ...
- APP埋点:页面统计与事件统计该如何入手?
我们平时所说的埋点,可以大致分为两部分,一部分是统计APP页面访问情况,即页面统计:另外一部分是统计APP内的操作行为,及自定义事件统计. 一.页面统计 页面统计,可以统计应用内各个页面的访问次数(P ...
- 路由器数据统计SQL脚本
一.路由器部分 //[饼图]统计路由器在线.离线数量 SELECT COUNT(*) AS total, MINUTE)) ELSE NULL END) AS livecount, MINUTE)) ...
- 转: 环信联合创始人:App主流反垃圾服务难点和技术实现全解析
转:http://science.china.com.cn/2016-03/24/content_8659834.htm 发布时间: 2016-03-24 13:15:02 | 来源: 全球财经网 ...
- discuz数据库表
http://faq.comsenz.com/library/database/x3/x3_index.htm discuz数据库表字典 Discuz X3各数据库表用途 pre_common_ ...
- Android 优质精准的用户行为统计和日志打捞方案
Android 自定义优质精准的用户行为和日志打捞方案 Tamic csdn博客 :http://blog.csdn.net/sk719887916/article/details/51398416 ...
- 商业版微信小程序开发流程
一.产品阶段 ①功能规划思维导图——产品经理了解清楚整个项目需求,产出清晰明确的功能需求说明. ②需求报价预算——产品经理确定好功能需求后,输出整个项目开发的报价方案. ③组建技术开发团队——初步确认 ...
- Parse 使用- iOS 后台数据[转]
原文地址:http://blog.csdn.net/vipwangl/article/details/8846415 最近在学习Parse,但是Parse的中文教程比较少,看到这篇英文教程,把它翻译一 ...
随机推荐
- Angular2.x
Angular版本 Angular1和Angular4分别是Angular的两个版本,也就是Angular1.x和Angular2.x(除了Angular1以外,其余都属于Angular2.x). 1 ...
- 关于对FLASH开发,starling、starling feathers、starling MVC框架的理解
说在前头:楼主之前没有不论什么flash开发经验,仅仅是从一次尝试中总结自己的理解和经验而已.假设有写的不正确的地方,欢迎大家指正. 前一段时间尝试想用flash(as3)又一次制作一下之前做的一个游 ...
- Makefile详解 (转--不错就是有点长)
概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,make ...
- Java 中 泛型的限定
泛型 一般 出如今集合中,迭代器中 也会出现! 泛型 是为了 提高代码的 安全性. 泛型 确保数据类型的唯一性. 在我们经常使用的容器中. 越是 单一 约优点理啊! ...
- QuickFont使用中的3D物体消失问题
使用基于OpenTK的QuickFont显示字体的时候,会遇到绘制的3D物体消失的问题. 搜索OpenTK的论坛后,解决办法如下: 在执行QFont.End()语句后,再后面添加GL.Disable( ...
- [IT新应用]brave浏览器
https://www.brave.com/about.html The web has become a different place. With the ad-tech ecosystem ou ...
- linux driver开发
1 开发linux driver时的调试思路 基本上是打印调试,原因很简单,方便.或者使用工具挂住cpu.
- webService和RMI
1.请求: servlet:提供了请求/响应模式,是JAVA的一种规范,只能使用于java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客户端访问一个服务器的url,只需要发送简单的ht ...
- Latex 2: 解决WinEdt和TexWorks用久之后忽然不能正反向搜索
说明:下面说的WinEdt版本是10.1,TexWorks是texlive2016中自带的texworks,如果情况不一样请自行测试,原理一样 1.不能正向搜索: 解决:① 确定路径名是英文名(实际上 ...
- Linux下高并发socket最大连接数所受的各种限制(详解)
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...