写一份统计分析SDK(1)

这将会是一系列的文章,逐渐构造一个我理想中的比较简洁的统计分析SDK。

功能

这份SDK的会收集如下的一些指标(固定指标):

  1. 设备Id(标识唯一设备,Android Id、Mac、Imei)
  2. 设备型号、系统版本
  3. 网络状况、运营商
  4. App 包名、版本、分发渠道等

还有一部分是App通用指标,比如App的启动、使用时长等,最后是自定义的指标,这部分指标通过自定义事件来实现。

接口设计

对于固定指标很容易采集,App的启动和时长信息,在Android上面不容易判断而且Android和iOS的生命周期也不一样,最好通过比较 灵活的方式来统计,所以定义一组方法

startSession() //App 启动的时候调用,启动Session
pauseSession() //暂停Session
resumeSession()//恢复Session计时
endSession()   //结束Session

这样就可以定义一组接口来统计App的启动并且记录使用时长。

自定义事件,现在大部分的统计系统支持的自定义事件统计层级都是很浅的(比如友盟的自定义事件现在为止最多支持3级id-key-value),我想设计一可以伸缩的层级结构,可以无限的嵌套下去。

设计这样的API log(id, cat1, cat2, cat3 ...) 这样在同一个id下的事件属性按照次序可以展开成树形结构,这样就可以随意 的做多层嵌套。

设备Id

设备Id的获取是比较困难的,因为不同设备上面的一些Id他们的稳定性是不一样的,所以需要特殊处理设备Id的问题。我比较推崇的 一种方式是把所有可以获取的Id全部获取,然后给每个Id分配一定权值,再后端通过权值计算每台设备的归属。//TODO 设备去重问题

协议

关于协议可以参考这里, 为了简单起见,使用json作为传输协议。

nTop 10 December 2014
blog comments powered by Disqus