最近在做一款采集Android应用数据的工具包,类似友盟、flurry、localytics这种:提供一个工具jar包供应用开发者使用,开发者只需要调用几个简单的api就可以完成对基本信息的采集。
首先,稳定性一定要非常好。不能给应用引入问题。
其次,我觉得这个工具包要足够的简单。上面列举的几款已经发布的数据采集工具包都做到了这点,使用都很简单。相比之下,友盟是做的比较好的,功能也最多,分析出来的数据也最多。flurry、localytics呢,功能精简,虽不如友盟功能多,但是核心功能都有。
再者,工具包要占用足够少的资源,这些资源包括打包后的jar包小、启动后占用内存小、上传数据到服务器消耗数据流量小等等。
最后,才是尽可能多的手机数据。
基于以上的思考,我使用并分析了localytics的实现(它是开源的且代码注释很全,其它两个未开源且都对源代码做了混淆)。
下面是localytics实现的类图,从中可以得到它的架构和一些实现细节。
localytics引入了session的概念,它可以大致理解为:一次用户使用app的行为会话。举个例子:当用户在home screen点击app A的图标,那么A启动,这时session也随之而创建;当用户使用A完成了想要做的事情之后,按back或者home key返回home screen时,session会将一些未上传的数据保存至数据库。如果定义这个session的超时时间为30s,那么如果30s内用户以各种方式进入该应用,那么session会尝试从数据库中自我恢复;如果用户再次进入该应用的时间超过30s,那么就会重新创建新session,并且将数据库中的旧session缓存数据清除。
如果以用户使用app的次数作为一项统计指标,引入session的会帮助解决一些问题:过滤短时间内用户频繁进入/退出应用而产生的无意义的访问信息;多应用之间切换,而不会产生多次访问记录(譬如weibo客户端启动照相机程序,然后将拍的照片返回给weibo客户端);session还可以用来保存用户的页面跳转轨迹;等等。总之,使用session会使得一些统计数据更准确或者便利;缺点是会加入复杂度,我们需要加入持久化/恢复session的代码。
LocalyticsSession就是上面所说的session的一个实现。它的功能主要分为两部分:1.提供给app接口;2.持有2个handler,一个负责处理session相关的事情,另外一个负责上传数据到服务器。
LocalyticsProvider提供与数据库的操作。由上图所示,SessionHandler和UploadHandler都需要使用到它。
DatapointHelper是一个收集手机端信息的帮助类,里面封装了跟Android相关的信息获取API。
JsonObjects定义了一些列上传到服务器的数据所对应的键值。
总得来看,这个收集用户信息的工具包还是比较简单的。手机端的信息采集,其实跟采集网页数据是相似的,就像这个session概念,也可以看做是从web领域借鉴过来的。对于一个分析系统而言,其核心还是后端数据分析与挖掘。
2012.3.8 update:
补充几个读取Android一些信息的API:
- AndroidManifest.xml相应的信息通过PackageInfo来获取
- android.content.pm 包里有很多可以获取系统各式各样信息的类。例如:通过PackageInfo可以获取AndroidManifest.xml文件中定义的信息;PackageManager可以获取多种跟程序包相关的信息。
- android.telephony.TelephoneyManager用于获取跟telephony服务及状态相关的信息。调用它的接口需要加入相应的权限,具体使用到的权限会在每个接口文档中说明。
- wifi相关的信息需要通过WifiManager一些方法获得
- 大小: 44.4 KB
分享到:
相关推荐
Daily:内容采集的Android客户端。基于Material Design MVP RxJava Retrofit实现。
Android移动客户端新闻采集器的设计与实现 (1).pdf
android客户端与服务器进行数据交互,客户端上传数据至服务器,服务器返回值给客户端
简简单单android客户端简简单单android客户端简简单单android客户端简简单单android客户端简简单单android客户端简简单单android客户端
Android客户端与服务器端的json数据交互(内含大量知识点),包含文件的上传,文件浏览器等。 Android客户端与服务器端的json数据交互(内含大量知识点),包含文件的上传,文件浏览器等。
一个Android客户端访问服务器数据库的实例,涉及mySQL数据库、json数据传输、Struts2+javabean+servlet,非常适合服务器后台入门
基于Android客户端的智能家居App设计.pdf
Android客户端与服务器数据交互流程.pdf
本科毕业设计-----新浪微博android客户端的实现
基于Android客户端的应用市场设计与实现论文
openfire是xmpp协议的实现,以其及时性和稳定性被倍受青睐,在此贡献出来Android客户端,希望与大家共同探讨。 文章地址:http://blog.csdn.net/sky_monkey/article/details/9495571
uchome android客户端设计,详细解析了客户端和服务器段的代码。
Android客户端上传数据到tomcat服务端的源码 Android客户端上传数据到tomcat服务端的源码
FastAndroid开源电商项目Android客户端 开发框架:FastAndroid,开发工具:Android Studio 本项目包含以下模块 商品模块:商品列表,商品分类,商品筛选及搜索,商品详情 购物车模块:购物车管理,在线支付,地址管理 ...
android的XMPP客户端
duic 配置中心 Java-Android 客户端工具包-duic-java-client.zip
Android客户端和服务器端数据交互Demo03.zip,欢迎下载!
Android客户端和服务器端数据交互Demo01.zip,欢迎下载
基于Android客户端财产管理系统的设计研究.pdf