填坑记(一)怎么判断唯一设备

小言毕业后就在某通讯企业的新兴互联部门做产品。我司是卖手机等移动设备的,国内销量不忍直视,国外出货量还是很大的,算是国际化颇为成功的手机厂商了。
我们的工作是为公司生产的应用提供数据统计和分析的,用有Big的话说是做大数据平台的。
数据统计里有一个重要的指标。

活跃用户: 在所选时间段内,启动过至少一次的用户。

乍一看是没啥问题,很简单一个概念嘛。日活月活什么的,算是数据分析最基础的部分了。
但这里就有一个很关键的问题

用什么来判断这是一个用户呢?

在web网站上,我们有UV(****unique visitor****)的概念。UV是指访问网站的独立用户,可以理解为多少人访问了咱的网站。其判断用户的标准是IP,每个IP代表了一个独立用户。

但在移动端,手机的IP地址是随着区域不断变化的,我们并不能用一个变化频繁的东西来判断用户。

我们的数据平台1.0版本,使用的是手机网卡的MAC地址。这是网卡的身份证号,是一个固有的属性。
从其定义上讲,我们完全可以用MAC来标记用户,事实上我们就是这么干的。

但在1.1版本的迭代中,通过对比同一个应用在友盟上的数据,发现我们统计的活跃用户数,总是少于友盟的。
友盟是市面上颇为成熟的统计产品了,出现这种数据差异,很大原因是我们的问题。

调查后发现,友盟使用了自己友盟ID方案,来标识用户,这个友盟ID是基于IMEI号的。

IMEI: 移动设备国际身份码,是手机的唯一识别号码。

又经过调查发现,单纯使用IMEI号可能产生如下问题:

  1. 很多山寨机使用相同的IMEI号。
  2. 双卡双待手机会有两个IMEI号。(不过这个可以通过只读取主卡的号来解决)

而使用MAC地址会更惨:

  1. 很多山寨机的MAC地址也是相同的。
  2. 不少机型在重启后,会随机生成一个新的MAC地址(http://blog.umeng.com/uncategorized/3991.html

衡量一番后,使用IMEI号更靠谱。但这有个问题。

平板木有imei号呀

我们不仅要统计手机上的应用,还要统计平板上的应用,如果只使用IMEI号的话,无法两者兼顾。

但有一个东西是两者都有的——Android系统。

在第一次开机启动的时候,Android系统会自动生成一个Android ID。但在主流厂商生产的设备上,有一个很经常的bug,就是每个设备都会产生相同的ANDROID_ID:9774d56d682e549c。

幸运的是,有一个算法可以规避这个BUG。

取Android ID,取不到就取IMEI号,再取不到就取MAC地址,前三者都取不到的话,就用算法生成一个UUID.

我们现在使用了上面这个策略,来标示独立设备。不过新的SDK还没有集成到app里,具体效果如何,日后再说咯。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,631评论 0 17
  • 到达天堂寨。吃完饭下午两点多开始爬山,只从索道上下,因为怕时间不够赶不及下山的景区巴士。下山后才知道,门票可以玩两...
    木字旁和小字阅读 248评论 0 0
  • 转载于:[http://blog.csdn.net/chenkai19920410/article/details...
    双鱼大猫阅读 540评论 0 5
  • 我们都要善待自己,因为我们都独一无二。可是有的人却看不到自己的好,把自己想得很卑微,很渺小,认为自己什么事情都做不...
    顾怜阅读 163评论 0 0