前言
近期,應(yīng)PM要求,對應(yīng)用的埋點(diǎn)方案進(jìn)行了調(diào)研,特在此寫個(gè)博客記錄分享一下。
需求分析
首先我們需要清楚埋點(diǎn)的實(shí)際需求是什么?對于一個(gè)產(chǎn)品來講埋點(diǎn)無非就是想了解用戶的使用習(xí)慣和產(chǎn)品的使用情況,從而從客戶和產(chǎn)品的角度去了解客戶群體,及其對產(chǎn)品的一些使用想法。本文將著重關(guān)注數(shù)據(jù)的收集而非數(shù)據(jù)分析。
數(shù)據(jù)處理
在這里,我們需要明確的一點(diǎn)是,數(shù)據(jù)處理的整個(gè)過程中,數(shù)據(jù)的收集是重中之重,它將是我們進(jìn)行數(shù)據(jù)的分析的大前提,因?yàn)椴杉臄?shù)據(jù)會直接影響到最后的分析結(jié)果。

因此,數(shù)據(jù)采集應(yīng)具備以下幾點(diǎn)特性:
多元性
采集過程應(yīng)從不同的維度去獲取數(shù)據(jù)。比如我們要采集用戶相關(guān)的部分?jǐn)?shù)據(jù)。那么我們可以從身高、體重、興趣愛好等各個(gè)層次、多維度的去采集對應(yīng)數(shù)據(jù)。這樣的數(shù)據(jù)還原出來的用戶對像才更有活性,對于今后的數(shù)據(jù)分析、包括描繪用戶畫像也更為有利。
準(zhǔn)確性
準(zhǔn)確性包含兩個(gè)層次的要求:1.數(shù)據(jù)采集過程的準(zhǔn)確性:對于特定的流程分析,我們的埋點(diǎn)方案要具備一定的針對性,避免無關(guān)因素的干擾。2.數(shù)據(jù)的客觀性。我們不能代替客戶,我們能做的只是觀察并記錄,臆想的數(shù)據(jù)對于我們毫無價(jià)值。
時(shí)效性
對于采集的數(shù)據(jù),它只能反映過去的某個(gè)時(shí)刻或者某段時(shí)間的客觀情況。得到的結(jié)果和結(jié)論也只能是對應(yīng)過去的某個(gè)時(shí)間段而言??赡苁鞘苤朴诋?dāng)時(shí)的網(wǎng)絡(luò)情況、社會環(huán)境等因素的影響,才會呈現(xiàn)出這樣的結(jié)果。所以我們在采集數(shù)據(jù)的同時(shí)最好能給它打上時(shí)間標(biāo)簽,方便今后的數(shù)據(jù)對比。
ok,接下里進(jìn)入正題--埋點(diǎn)
什么是埋點(diǎn)?
簡單的說,埋點(diǎn)就是定時(shí)、定點(diǎn)的數(shù)據(jù)采集,然后上報(bào)。
舉個(gè)簡單的??

如圖,比如我們在到達(dá)頁面A的時(shí)候,進(jìn)行數(shù)據(jù)采集和上報(bào),告訴服務(wù)器我是誰?我在哪里?我干了些什么?而后進(jìn)入頁面B,進(jìn)行相同的操作,以此類推。最后后臺可以根據(jù)得到的數(shù)據(jù)還原用戶的各種行為,最終將這些數(shù)據(jù)呈現(xiàn)出來,方便運(yùn)營等進(jìn)行分析操作。(技術(shù)上講,這里實(shí)際上還包含數(shù)據(jù)存儲和傳輸?shù)葐栴},不同的埋點(diǎn)方案的處理方式都不盡相同,這里就不做過多的闡述了。)
埋點(diǎn)方案一:代碼埋點(diǎn)
代碼埋點(diǎn)是很多人一開始就會想到的方案,也是目前最為人所知的一種方案。包括友盟在內(nèi)的一些服務(wù)商目前都在使用這種方案。實(shí)現(xiàn)方式相信大家一看就明白,就是在需要數(shù)據(jù)采集的地方抓取數(shù)據(jù),然后上傳。
要指出的是,這里的數(shù)據(jù)采集往往會以事件的方式進(jìn)行。事件包含事件名稱、事件參數(shù)等,簡單的點(diǎn)擊事件統(tǒng)計(jì)(比如統(tǒng)計(jì)點(diǎn)擊事件)僅需事件名稱即可,如果想抓住事件內(nèi)部的一些數(shù)據(jù)的話,比如電商領(lǐng)域的一些交易統(tǒng)計(jì),就會在用戶點(diǎn)擊提交購買按鈕的時(shí)候在事件參數(shù)里傳遞總價(jià)等數(shù)值。在開發(fā)文檔里,后者通常會被稱為自定義事件,這也是代碼埋點(diǎn)最具靈活性的地方。
這種方案的優(yōu)點(diǎn)在于它的準(zhǔn)確性和針對性。指哪打哪,不浪費(fèi)一發(fā)子彈。如果項(xiàng)目較小或者還只是在項(xiàng)目初期,這種方案還算可以接受,但是如果在較大的項(xiàng)目項(xiàng)目或者處于開發(fā)后期的項(xiàng)目來做,對于程序員來講無疑是身心上的摧殘。一方面工作量太大,這種特定的頁面的數(shù)據(jù)采集方案(PM:什么?不知道埋哪里?那就都埋了吧?。┠芡祽械牡胤蕉紱]有;另一方面,這種方案對代碼的入侵性太大,很可能導(dǎo)致代碼高耦合,并且這種方式采集的數(shù)據(jù)維度往往會太過單一。如果今后想從更高的層面或者其他角度去分析,很有可能需要重新埋點(diǎn)和發(fā)布版本。

埋點(diǎn)方案二:可視化埋點(diǎn)
代碼埋點(diǎn)將核心代碼和配置資源進(jìn)行了分離。在每次啟動的時(shí)候都會有去請求最新的埋點(diǎn)配置,他在一定程度上降低了代碼埋點(diǎn)的門檻,只要客戶端集成之后,PM在web上就可以進(jìn)行操作(讓PM自己玩去吧╮(╯▽╰)╭)
那么它是如何實(shí)現(xiàn)的呢?

如圖,簡單來說,客戶端集成SDK之后,在用戶使用的過程中會定時(shí)截圖,同時(shí)獲取應(yīng)用視圖的層級關(guān)系,傳到服務(wù)端。服務(wù)端會重新渲染頁面,并判斷控件是否可以埋點(diǎn),然后關(guān)聯(lián)對應(yīng)的埋點(diǎn)事件,最后將配置信息傳回客戶端。
這種方式從某種程度上大大提升了應(yīng)用的埋點(diǎn)靈活性,使用方便。當(dāng)然它也有一定的局限性,比如埋點(diǎn)的內(nèi)容有限,不能像代碼埋點(diǎn)一樣采用自定義事件,所以對于較為深入的行為分析要求,這種方案不能很好的實(shí)現(xiàn)。
埋點(diǎn)方案三:無埋點(diǎn)
無埋點(diǎn)的的技術(shù)方案,早在2013年就已提出了。它在客戶端集成之后,會主動的盡可能多的收集數(shù)據(jù),甚至連要在那里埋點(diǎn)的問題都省略了,我們不用去設(shè)置配置文件,如果我們想要特定的數(shù)據(jù)直接去查詢即可(這就是為什么叫無埋點(diǎn))。
與可視化埋點(diǎn)相比,無埋點(diǎn)主要解決的是數(shù)據(jù)的回溯問題。比如,我們想要得到某個(gè)頁面的訪問數(shù)量,如果是可視化埋點(diǎn),就需要去配置一下埋點(diǎn)方案,然后發(fā)布,一段時(shí)間之后才會得到對應(yīng)的數(shù)據(jù)。我們無法獲取到發(fā)布之前的某個(gè)時(shí)間內(nèi)的訪問情況。也就是說所有想得到的數(shù)據(jù)只有在配置文件發(fā)布之后才能看到。對于無埋點(diǎn)方案來講,這些數(shù)據(jù)的采集早在SDK集成的時(shí)候就開始了。某天突然想要看下,查詢下就可以看到了。當(dāng)然,它的缺點(diǎn)也是顯而易見的,采集的數(shù)據(jù)越多,對于數(shù)據(jù)傳輸和存儲的要求就會越高。
其實(shí),有時(shí)候?qū)τ谀承z測行為,我們并非一定要在客戶端做??紤]到數(shù)據(jù)處理過程中的傳輸和存儲問題(本地?cái)?shù)據(jù)存儲),在服務(wù)端進(jìn)行埋點(diǎn)和分析會顯得事半功倍。
一些國內(nèi)外的服務(wù)商
Google Analytics(Firebase Analytics)
https://firebase.google.com/docs/database/ios/start
Firebase Analytics是2016年在Google I/O上推出的針對移動應(yīng)用的服務(wù)。
Flurry
https://developer.yahoo.com/flurry/docs/analytics/gettingstarted/technicalquickstart/ios/
Localytics
http://docs.localytics.com/dev/ios.html
Mixpanel
https://mixpanel.com/help/reference/ios
(支持可視化埋點(diǎn))
Umeng
http://dev.umeng.com/analytics/ios-doc/integration?spm=0.0.0.0.t9tzbd
Growing IO
https://help.growingio.com/SDK/iOS.html
(國內(nèi)無埋點(diǎn)方案-無埋點(diǎn)的啟發(fā)性更好哦)
TalkingData
https://www.talkingdata.com/tracking/documents/AdTracking_SDK_iOS_%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3.pdf
以上都是集成文檔的鏈接,各家都有自己的特點(diǎn)。具體方案請視自己的情況而定。
自行搭建埋點(diǎn)服務(wù)
有時(shí)候我們也會遇到數(shù)據(jù)是有了,但是當(dāng)要把原始數(shù)據(jù)做導(dǎo)出分析時(shí)又遇到問題。自己產(chǎn)品的數(shù)據(jù)卻不能被我們自己擁有。
這里介紹兩款免費(fèi)開源的私有化部署方案
1.cobub razor
傳送門:http://www.cobub.com
2.countly
傳送門:https://count.ly
總結(jié):
不同的埋點(diǎn)方案都有各自的優(yōu)缺點(diǎn),對于不同的業(yè)務(wù)需求,一種埋點(diǎn)方案明顯無法滿足 ,所以往往我們需要結(jié)合多種方案進(jìn)行處理。
最后,希望本文能拓寬大家對于埋點(diǎn)的思路吧:)
若文章中有不對的地方望指正,萬分感謝!
本文提到的服務(wù)商與本人沒有利益關(guān)系.
參考文章
1.http://www.itechdog.com/blog/event-tracking?utm_source=tuicool&utm_medium=referral
2.http://m.itdecent.cn/p/973d626fa19a
3.http://m.itdecent.cn/p/4e1b371ec46a
4.https://www.zhihu.com/question/41831617