小言畢業(yè)后就在某通訊企業(yè)的新興互聯(lián)部門做產(chǎn)品捅伤。我司是賣手機(jī)等移動(dòng)設(shè)備的吏饿,國(guó)內(nèi)銷量不忍直視愈腾,國(guó)外出貨量還是很大的炉爆,算是國(guó)際化頗為成功的手機(jī)廠商了堕虹。
我們的工作是為公司生產(chǎn)的應(yīng)用提供數(shù)據(jù)統(tǒng)計(jì)和分析的,用有Big的話說(shuō)是做大數(shù)據(jù)平臺(tái)的芬首。
數(shù)據(jù)統(tǒng)計(jì)里有一個(gè)重要的指標(biāo)赴捞。
活躍用戶: 在所選時(shí)間段內(nèi),啟動(dòng)過(guò)至少一次的用戶郁稍。
乍一看是沒(méi)啥問(wèn)題赦政,很簡(jiǎn)單一個(gè)概念嘛。日活月活什么的耀怜,算是數(shù)據(jù)分析最基礎(chǔ)的部分了恢着。
但這里就有一個(gè)很關(guān)鍵的問(wèn)題
用什么來(lái)判斷這是一個(gè)用戶呢桐愉?
在web網(wǎng)站上,我們有UV(****unique visitor****)的概念掰派。UV是指訪問(wèn)網(wǎng)站的獨(dú)立用戶从诲,可以理解為多少人訪問(wèn)了咱的網(wǎng)站。其判斷用戶的標(biāo)準(zhǔn)是IP,每個(gè)IP代表了一個(gè)獨(dú)立用戶碗淌。
但在移動(dòng)端盏求,手機(jī)的IP地址是隨著區(qū)域不斷變化的,我們并不能用一個(gè)變化頻繁的東西來(lái)判斷用戶亿眠。
我們的數(shù)據(jù)平臺(tái)1.0版本碎罚,使用的是手機(jī)網(wǎng)卡的MAC地址。這是網(wǎng)卡的身份證號(hào)纳像,是一個(gè)固有的屬性荆烈。
從其定義上講,我們完全可以用MAC來(lái)標(biāo)記用戶竟趾,事實(shí)上我們就是這么干的憔购。
但在1.1版本的迭代中,通過(guò)對(duì)比同一個(gè)應(yīng)用在友盟上的數(shù)據(jù)岔帽,發(fā)現(xiàn)我們統(tǒng)計(jì)的活躍用戶數(shù)玫鸟,總是少于友盟的。
友盟是市面上頗為成熟的統(tǒng)計(jì)產(chǎn)品了犀勒,出現(xiàn)這種數(shù)據(jù)差異屎飘,很大原因是我們的問(wèn)題。
調(diào)查后發(fā)現(xiàn)贾费,友盟使用了自己友盟ID方案钦购,來(lái)標(biāo)識(shí)用戶,這個(gè)友盟ID是基于IMEI號(hào)的褂萧。
IMEI: 移動(dòng)設(shè)備國(guó)際身份碼,是手機(jī)的唯一識(shí)別號(hào)碼押桃。
又經(jīng)過(guò)調(diào)查發(fā)現(xiàn),單純使用IMEI號(hào)可能產(chǎn)生如下問(wèn)題:
- 很多山寨機(jī)使用相同的IMEI號(hào)导犹。
- 雙卡雙待手機(jī)會(huì)有兩個(gè)IMEI號(hào)唱凯。(不過(guò)這個(gè)可以通過(guò)只讀取主卡的號(hào)來(lái)解決)
而使用MAC地址會(huì)更慘:
- 很多山寨機(jī)的MAC地址也是相同的。
- 不少機(jī)型在重啟后谎痢,會(huì)隨機(jī)生成一個(gè)新的MAC地址(http://blog.umeng.com/uncategorized/3991.html)
衡量一番后波丰,使用IMEI號(hào)更靠譜。但這有個(gè)問(wèn)題舶得。
平板木有imei號(hào)呀
我們不僅要統(tǒng)計(jì)手機(jī)上的應(yīng)用,還要統(tǒng)計(jì)平板上的應(yīng)用爽蝴,如果只使用IMEI號(hào)的話沐批,無(wú)法兩者兼顧纫骑。
但有一個(gè)東西是兩者都有的——Android系統(tǒng)。
在第一次開機(jī)啟動(dòng)的時(shí)候九孩,Android系統(tǒng)會(huì)自動(dòng)生成一個(gè)Android ID先馆。但在主流廠商生產(chǎn)的設(shè)備上,有一個(gè)很經(jīng)常的bug躺彬,就是每個(gè)設(shè)備都會(huì)產(chǎn)生相同的ANDROID_ID:9774d56d682e549c煤墙。
幸運(yùn)的是,有一個(gè)算法可以規(guī)避這個(gè)BUG宪拥。
取Android ID,取不到就取IMEI號(hào)仿野,再取不到就取MAC地址,前三者都取不到的話她君,就用算法生成一個(gè)UUID.
我們現(xiàn)在使用了上面這個(gè)策略脚作,來(lái)標(biāo)示獨(dú)立設(shè)備。不過(guò)新的SDK還沒(méi)有集成到app里缔刹,具體效果如何球涛,日后再說(shuō)咯。