數(shù)據(jù)埋點(diǎn):如何標(biāo)識(shí)你的用戶
編輯導(dǎo)語:用戶標(biāo)識(shí)可以助力于用戶行為的分析,而用戶賬號(hào)ID標(biāo)識(shí)是用戶標(biāo)識(shí)的有效方式。那么,針對(duì)沒有賬號(hào)體系的產(chǎn)品,用戶標(biāo)識(shí)又可以如何操作?本篇文章里,作者就如何借用設(shè)備信息作為用戶標(biāo)識(shí)進(jìn)行了闡述和總結(jié),一起來看一下。
選取合適的用戶標(biāo)識(shí)對(duì)于提高用戶行為分析的準(zhǔn)確性有非常大的影響,也是我們進(jìn)行數(shù)據(jù)埋點(diǎn)時(shí)需要最優(yōu)先考慮的問題。因此,我們?cè)谶M(jìn)行任何數(shù)據(jù)接入之前,都應(yīng)當(dāng)先確定如何來標(biāo)識(shí)用戶。
很多同學(xué)看到這可能會(huì)有點(diǎn)納悶,如何標(biāo)識(shí)用戶?難道不是通過用戶的賬號(hào)ID嗎?
你說得沒錯(cuò),不過用戶賬號(hào)是針對(duì)于有賬號(hào)體系的產(chǎn)品,而對(duì)于那些沒有賬號(hào)體系,例如官網(wǎng)、活動(dòng)落地頁,或者需要分析游客行為這樣的場(chǎng)景下,我們?cè)趺床拍軐?duì)不同的用戶進(jìn)行標(biāo)識(shí)呢?
我們很容易發(fā)現(xiàn),任何用戶在獲取線上服務(wù)時(shí),都需要通過設(shè)備。
所以,我們很自然地就會(huì)想到使用設(shè)備的一些信息來近似作為用戶標(biāo)識(shí)。
那么,設(shè)備的哪些信息可以作為用戶標(biāo)識(shí)呢?
一、如何獲取移動(dòng)端設(shè)備唯一標(biāo)識(shí)
移動(dòng)端主要的設(shè)備就是手機(jī),我們這里主要講如何獲得Android和iOS的設(shè)備ID。
1. 如何獲取Android設(shè)備的唯一標(biāo)識(shí)
首先我們來看下Android的設(shè)備信息。
可以看到,上述Android的設(shè)備信息中,UDID是最靠譜的,但是Android ID是最容易獲取到的。
所以,一般市場(chǎng)上的策略,會(huì)使用 UUID。
但是App 卸載重裝 UUID 會(huì)變,為了保證設(shè)備 ID 不變,可以把UUID寫入.so的文件,這樣即使重裝APP也不會(huì)改變。
還有一種策略是使用 Android Id 作為設(shè)備 ID,雖然刷機(jī)、重裝系統(tǒng)或恢復(fù)出廠設(shè)置會(huì)改變,但是一般用戶不會(huì)這么操作。
2. 如何獲取iOS設(shè)備的唯一標(biāo)識(shí)
iOS設(shè)備也有IMEI、MEID、MAC地址、UDID、UUID等設(shè)備信息,前幾個(gè)現(xiàn)在都禁止獲取了,而UUID是會(huì)變化的。
iOS也有一些獨(dú)有的設(shè)備信息。
所以總結(jié)起來,iOS好像沒有什么靠譜的標(biāo)記用戶的方法,別急,牛逼的程序員們總是能想出各種騷操作。
現(xiàn)在iOS一般標(biāo)記用戶的方式是獲取每臺(tái)設(shè)備的UUID,將其寫入keychain中進(jìn)行固化,這樣即使用戶重裝APP,保存在keychain中的UUID也不會(huì)改變了。
二、如何獲取web端和微信小程序的設(shè)備唯一標(biāo)識(shí)
說完移動(dòng)設(shè)備的,我們?cè)賮砜匆幌氯绾潍@取web端和微信小程序的設(shè)備唯一標(biāo)識(shí)。
web端其實(shí)也分為兩種訪問方式,PC端瀏覽器和移動(dòng)端瀏覽器,但其實(shí)都是一樣的。
web端默認(rèn)情況下使用 cookie_id,當(dāng)用戶首次訪問網(wǎng)站時(shí),我們會(huì)自動(dòng)生成一串cookie數(shù)據(jù),然后存貯在瀏覽器的 cookie 中。
cookie的生成規(guī)則可以是五段不同含義的字段拼接而成來保證唯一性,其中包括兩段時(shí)間戳,一段屏幕寬高,一段隨機(jī)數(shù),一段 UA 值。
而微信小程序端,默認(rèn)情況下使用 UUID,但是刪除小程序,UUID 會(huì)變。
為了保證設(shè)備 ID 不變,建議獲取并使用 openid。
如果選擇使用 openid 的話,要注意將獲取到openid之前用戶的操作暫存。
因?yàn)楂@取 openid 是一個(gè)異步的操作,而冷啟動(dòng)事件等會(huì)先發(fā)生,這時(shí)候這個(gè)冷啟動(dòng)事件還沒有獲取到openid。
所以我們需要把先發(fā)生的操作暫存起來,等獲取到 openid 后拼接好再發(fā)送數(shù)據(jù)。
三、最后
讓我們最后來總結(jié)一下Android、iOS、web和小程序是如何獲取設(shè)備唯一標(biāo)識(shí)的:
- Android有兩種方式,第一種是獲取UUID寫入.so文件固化成UDID,第二種是獲取Android ID。
- iOS是獲取UUID,然后寫入keychain中進(jìn)行保存,然后每次從keychain中取用戶標(biāo)識(shí)。
- web一般是生成cookie并存在設(shè)備的瀏覽器中。
- 微信小程序,可以使用UUID,但是用戶刪除小程序后會(huì)變化,建議使用openID。使用openID要注意冷啟動(dòng)的時(shí)候,要暫存操作事件,獲取到openID后再上傳。
作者:Jarvan;公眾號(hào):產(chǎn)品叨比叨
本文由 @Jarvan 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
冷啟動(dòng)是啥
我也想問
從用戶認(rèn)知的角度看,廣義的小程序啟動(dòng)可以分為兩種情況,一種是冷啟動(dòng),一種是熱啟動(dòng)。
冷啟動(dòng):如果用戶首次打開,或小程序銷毀后被用戶再次打開,此時(shí)小程序需要重新加載啟動(dòng),即冷啟動(dòng)。
熱啟動(dòng):如果用戶已經(jīng)打開過某小程序,然后在一定時(shí)間內(nèi)(目前微信是30min)再次打開該小程序,此時(shí)小程序并未被銷毀,只是從后臺(tái)狀態(tài)進(jìn)入前臺(tái)狀態(tài),這個(gè)過程就是熱啟動(dòng)。
從小程序生命周期的角度來看,我們一般講的「啟動(dòng)」專指冷啟動(dòng),熱啟動(dòng)一般被稱為后臺(tái)切前臺(tái)。