一 growingIO
1? android半自動(dòng)采集瀏覽事件
半自動(dòng)瀏覽事件能夠攜帶用戶添加的自定義事件和變量拐格,當(dāng)View從屏幕中出現(xiàn)則自動(dòng)發(fā)送事件。
半自動(dòng)瀏覽事件介紹
新版方案:用戶標(biāo)記一個(gè) View 并提供自定義事件和變量询筏,SDK 負(fù)責(zé)監(jiān)控拖叙,當(dāng)此 View 對(duì)象可見時(shí)發(fā)送用戶配置的自定義事件和變量厌衔。
新版用戶瀏覽事件半自動(dòng)究竟指什么钱骂?
不再全量采集所有 View 的瀏覽事件,改為只采集用戶主動(dòng)標(biāo)記 view 黄痪。事件類型使用自定義事件類型 cstm (custom)紧帕,不再使用 imp (impression)。需要用戶在代碼中埋點(diǎn)并且在官網(wǎng)配置自定義事件和變量满力。
SDK 將 View 對(duì)象在當(dāng)前屏幕是否可見焕参,是否滾動(dòng)出屏幕又再次出現(xiàn)納入采集發(fā)送策略,并取消瀏覽事件與頁面的關(guān)聯(lián)油额。即:共享 View 對(duì)象的不同頁面不會(huì)重復(fù)發(fā)送叠纷,并且 view 對(duì)象不在當(dāng)前屏幕又再次滑入會(huì)再次發(fā)送。后文詳細(xì)舉例說明.
半自動(dòng)指:用戶提供 View 的自定義事件和變量?jī)?nèi)容潦嘶,SDK 根據(jù)當(dāng)前 view 對(duì)象是否在屏幕上可見涩嚣,自動(dòng)發(fā)送一個(gè)自定義事件。即:需要用戶標(biāo)記 View 并且提供自定義事件和變量掂僵,SDK 在 View 對(duì)象出現(xiàn)在屏幕上時(shí)自動(dòng)發(fā)送航厚,不同于 track 接口發(fā)送的 cstm 事件,調(diào)用即發(fā)送锰蓬。
下面我們將從三個(gè)方面介紹此方案幔睬。
1. 標(biāo)記View并設(shè)置自定義事件和變量
在舊版無埋點(diǎn) SDK 中,如果想查看某個(gè)廣告位的具體某個(gè)商品的曝光次數(shù)芹扭,通過圈選廣告位的 view 元素的 imp 事件是無法做到的麻顶,仍需要您埋點(diǎn)自定義事件赦抖。
在埋點(diǎn)元素曝光時(shí),開發(fā)人員需要對(duì) View 在當(dāng)前屏幕上的可見性做邏輯判斷辅肾,需要監(jiān)控 View 對(duì)象是否在當(dāng)前可見或者是否再次出現(xiàn)在屏幕上队萤,有一定代碼實(shí)施難度。
此方案將監(jiān)控 View 的可見和埋點(diǎn)的觸發(fā)時(shí)機(jī)交給 GIO SDK 矫钓, 開發(fā)者只需要將自定義事件的變量傳遞給 SDK 即可要尔。
2. 元素的瀏覽事件相對(duì)于舊版更準(zhǔn)
對(duì)于用戶主動(dòng)標(biāo)記 imp 采集的元素,相對(duì)于舊版本自動(dòng)采集會(huì)更加準(zhǔn)確新娜,我們舉例以下兩個(gè)場(chǎng)景來說明赵辕。
場(chǎng)景1 : 不同的頁面共享同一個(gè)元素
imp場(chǎng)景1
底部的導(dǎo)航欄在 Tab 頁面中是共享元素,即切換 Tab 杯活,底部的導(dǎo)航欄持續(xù)可見匆帚,在不同的 Tab 頁面中是共享元素。
舊版本:
導(dǎo)航欄的 imp 事件會(huì)分別在對(duì)應(yīng)的四個(gè)頁面中發(fā)送旁钧,切換 Tab 頁面時(shí)雖然底部導(dǎo)航欄持續(xù)可見,但是會(huì)重復(fù)發(fā)送互拾。
為什么舊版本會(huì)這么統(tǒng)計(jì)呢歪今? 因?yàn)?imp 事件的歸因和 page 事件強(qiáng)關(guān)聯(lián),切換了頁面颜矿,就認(rèn)為導(dǎo)航欄是這個(gè)頁面中的元素寄猩,不支持多個(gè)頁面共享元素的情況。
新版本:
在用戶標(biāo)記導(dǎo)航欄需要采集后骑疆,無論切換 ab 多少次田篇,我們只會(huì)在用戶第一次可見導(dǎo)航欄,發(fā)一次元素瀏覽事件箍铭。
可以認(rèn)為新版本方案只關(guān)心當(dāng)前元素對(duì)于用戶是否可見泊柬,和頁面訪問事件 page 無關(guān)聯(lián)。更貼近實(shí)際場(chǎng)景诈火,相對(duì)舊版本更準(zhǔn)兽赁。
總結(jié):
1 上報(bào)機(jī)制的區(qū)別,舊版本沒有考慮到實(shí)際的情形上報(bào)全部信息冷守。新版本發(fā)送人工選擇之后的信息刀崖。
場(chǎng)景2 : 列表元素的展現(xiàn)統(tǒng)計(jì)
imp場(chǎng)景2
舊版本:
GIO 推薦廣告位在 ScrollView 的最底部,需要用戶滑動(dòng)才能看到拍摇,但是頁面初始化的時(shí)候繪制亮钦,只是當(dāng)前屏幕不可見。
舊版本中只會(huì)發(fā)送一次 imp 事件充活,無論隨著用戶的滑動(dòng)元素是否再次可見蜂莉,只有在頁面初始化的時(shí)候發(fā)送此元素的 imp 事件蜡娶。
新版本:
隨著用戶的滑動(dòng)手勢(shì),元素進(jìn)入屏幕則觸發(fā)自動(dòng)埋點(diǎn)事件巡语,滑動(dòng)出屏幕后翎蹈,再滾動(dòng)回來 View 再次可見依然會(huì)發(fā)送自動(dòng)埋點(diǎn)事件。
即為元素對(duì)于用戶可見幾次則發(fā)送幾次事件男公。
新版本瀏覽事件采集的列表荤堪,內(nèi)部的元素展現(xiàn)次數(shù)的統(tǒng)計(jì)更加準(zhǔn)確,更符合業(yè)務(wù)場(chǎng)景枢赔。
總結(jié):新版本改為展示上傳澄阳。
3. 提升用戶瀏覽事件采集的性能
舊版本中,無埋點(diǎn) SDK 將自動(dòng)采集所有 View 的信息踏拜,最終分析時(shí)不會(huì)分析所有 APP 中的 View碎赢,在APP的性能、用戶流量上都是一種浪費(fèi)速梗。
新版本中肮塞,SDK 非全量采集所有列表中的元素,只采集用戶配置的元素姻锁,性能有較大提升枕赵。
總結(jié):growingio由全自動(dòng)切換到半自動(dòng),觸發(fā)條件與采集上報(bào)機(jī)制位隶。
二 埋點(diǎn)方案
從位置上分為前端埋點(diǎn)和后端埋點(diǎn)拷窜,從形式上分為顯性埋點(diǎn)和隱性埋點(diǎn),從路徑上又可以分為路徑埋點(diǎn)和獨(dú)立埋點(diǎn)涧黄,從需求上分為業(yè)務(wù)埋點(diǎn)和監(jiān)測(cè)埋點(diǎn)篮昧。
1.? 前端埋點(diǎn)
前端埋點(diǎn)是在用戶端(APP、Web笋妥、客戶端)等嵌入數(shù)據(jù)采集代碼懊昨,比如友盟等均采用的是前端埋點(diǎn),比如通過嵌入一段代碼就就可以對(duì)網(wǎng)頁數(shù)據(jù)的訪問數(shù)據(jù)進(jìn)行采集挽鞠。相比于后端埋點(diǎn)疚颊,前端埋點(diǎn)能方便收集到用戶在界面上的行為數(shù)據(jù),比如用戶點(diǎn)了哪個(gè)按鈕信认、頁面之間的跳轉(zhuǎn)次序材义、停留時(shí)長(zhǎng)等,這些數(shù)據(jù)是后面進(jìn)行數(shù)據(jù)分析的主要來源嫁赏。
前端埋點(diǎn)技術(shù)有以下三類:
代碼埋點(diǎn)
代碼埋點(diǎn)是直接將采集SDK集成在終端其掂,然后不斷在此基礎(chǔ)上添加調(diào)整采集方案,是目前主流的埋點(diǎn)采集方案潦蝇,其優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):
高度定制款熬、控制精準(zhǔn)深寥、采集的數(shù)據(jù)豐富準(zhǔn)確
缺點(diǎn):
首先是每當(dāng)有采集需求,需要開發(fā)人員不斷添加采集代碼贤牛,工作量大惋鹅;
其次變更采集策略,需要發(fā)布新版本殉簸,代價(jià)巨大闰集,存在滯后效應(yīng);
最后由于采集代碼常駐終端般卑,不斷將采集的用戶行為數(shù)據(jù)進(jìn)行記錄和上報(bào)武鲁,對(duì)于終端尤其是移動(dòng)終端來說還有耗電、消耗數(shù)據(jù)流量等負(fù)載蝠检,此外在數(shù)據(jù)上報(bào)傳輸?shù)倪^程中也存在丟失數(shù)據(jù)的風(fēng)險(xiǎn)沐鼠。
可視化埋點(diǎn)
由于代碼埋點(diǎn)需要終端開發(fā)人員來執(zhí)行采集方案,對(duì)業(yè)務(wù)的功能開發(fā)侵入性較高叹谁。有的公司開發(fā)出了可視化埋點(diǎn)技術(shù)饲梭,只需要產(chǎn)品與運(yùn)營(yíng)人員通過GUI界面進(jìn)行鼠標(biāo)簡(jiǎn)單點(diǎn)擊,就可以隨時(shí)增加焰檩、取消排拷、調(diào)整采集數(shù)據(jù)的位置和方式,此種埋點(diǎn)方式避開了終端開發(fā)人員的介入锅尘,由需求人員直接執(zhí)行采集,減輕了需求傳遞過程中的信息損耗和誤解布蔗,另外可視化埋點(diǎn)技術(shù)往往由服務(wù)端直接下發(fā)采集的配置文件藤违,而不用跟隨版本發(fā)布,從而加快了數(shù)據(jù)采集的流程纵揍。
具體實(shí)現(xiàn)方式參考:
具體實(shí)現(xiàn)是SDK定時(shí)做界面截圖顿乒,在截圖的同時(shí)從界面UI的根對(duì)象開始遍歷所有的可視化子對(duì)象,得到其層級(jí)關(guān)系泽谨。根據(jù)截圖和UI元素的可視化信息重新渲染頁面璧榄,識(shí)別可埋點(diǎn)的控件。當(dāng)產(chǎn)品人員在后臺(tái)管理端的截屏畫面上點(diǎn)擊可埋點(diǎn)控件吧雹,設(shè)置事件關(guān)聯(lián)方面的配置骨杂,服務(wù)器保存這些配置,客戶端在獲取到這些配置信息以后雄卷,按照新配置采集數(shù)據(jù)搓蚪。
無埋點(diǎn)
無埋點(diǎn)與可視化埋點(diǎn)原理基本一致,區(qū)別在于無埋點(diǎn)是先遍歷所有的控件和操作行為的組合情況丁鹉,然后將這些組合情況交給埋點(diǎn)后臺(tái)妒潭,由數(shù)據(jù)分析人員選擇對(duì)哪些組合的埋點(diǎn)數(shù)據(jù)進(jìn)行分析悴能,其優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):
1? 可視化展示界面最基本度量,滿足基本數(shù)據(jù)分析需求雳灾。無埋點(diǎn)可視化展示界面PV漠酿、UV等最基本度量。
2? 技術(shù)門檻低谎亩,使用與部署較為簡(jiǎn)單炒嘲。無埋點(diǎn)極大程度避免了因需求變更、埋點(diǎn)錯(cuò)誤等原因?qū)е碌闹匦侣顸c(diǎn)繁復(fù)工作团驱。
3 用戶友好性好摸吠。
缺點(diǎn):
1? 無埋點(diǎn)只能采集到用戶交互數(shù)據(jù),且適合標(biāo)準(zhǔn)化的采集嚎花,自定義屬性的采集仍舊需要代碼埋點(diǎn)來輔助寸痢。例如在電商行業(yè)中,用戶點(diǎn)擊“購(gòu)物車”是一次交互行為紊选,無埋點(diǎn)會(huì)忽略用戶信息啼止、商品品類信息等其他維度的信息。
2? 無埋點(diǎn)兼容性有限兵罢。例如對(duì)安卓系統(tǒng)進(jìn)行埋點(diǎn)時(shí)献烦,不同工程師對(duì)不同APP可能會(huì)對(duì)相同的button起不同名稱的ID,當(dāng)運(yùn)營(yíng)人員想要篩選所需數(shù)據(jù)時(shí)卖词,不同名稱會(huì)給運(yùn)營(yíng)人員帶來困擾巩那。
3? 無埋點(diǎn)具有前端埋點(diǎn)的固有缺陷。無埋點(diǎn)是前端數(shù)據(jù)采集方式之一此蜈,因此具有前端埋點(diǎn)的天然缺陷即横,如數(shù)據(jù)采集不全面、傳輸時(shí)效性較裆赵、數(shù)據(jù)可靠性無法保證等問題东囚。無埋點(diǎn)的技術(shù)原理依賴網(wǎng)站或者APP后端技術(shù)開發(fā)的嚴(yán)謹(jǐn)性與規(guī)范性、網(wǎng)絡(luò)狀態(tài)战授、網(wǎng)絡(luò)口徑等页藻。
前端埋點(diǎn)的注意事項(xiàng):
頁面和控件標(biāo)示上報(bào)要從頂層進(jìn)行合理的設(shè)計(jì),層次感要明顯
埋點(diǎn)數(shù)據(jù)的漏報(bào)和重復(fù)上報(bào)如何衡量
前端埋點(diǎn)不僅可以處理不需要和服務(wù)器交互的曝光和點(diǎn)擊事件植兰,也可以將與服務(wù)器交互的結(jié)果份帐,比如關(guān)注成功、分享成功钉跷、優(yōu)惠券領(lǐng)取成功等原屬于后端埋點(diǎn)里的事件放在前端來上報(bào)弥鹦。
2. 后端埋點(diǎn)
后端埋點(diǎn)為了避免前端埋點(diǎn)的以下問題:
前端埋點(diǎn)需要對(duì)采集的數(shù)據(jù)壓縮、暫存,為減少移動(dòng)端的數(shù)據(jù)流量彬坏,除一些需要實(shí)時(shí)上報(bào)的重要事件不限制網(wǎng)絡(luò)環(huán)境朦促,其它事件一般只在wifi情況下上報(bào),因此數(shù)據(jù)會(huì)有延遲栓始,丟數(shù)據(jù)等弊端务冕,而在后端采集數(shù)據(jù),由于數(shù)據(jù)是在內(nèi)網(wǎng)傳輸幻赚,數(shù)據(jù)傳輸?shù)募磿r(shí)性強(qiáng)禀忆,丟失數(shù)據(jù)的風(fēng)險(xiǎn)小。
前端埋點(diǎn)采集程序由于需要常駐落恼,監(jiān)測(cè)實(shí)時(shí)和延遲埋點(diǎn)上報(bào)箩退,不可避免的帶來額外的耗電。
前端埋點(diǎn)若要新增或調(diào)整采集方案佳谦,需要開發(fā)人員修改客戶端代碼戴涝,然后發(fā)版之后才能解決,受發(fā)布周期的影響較大钻蔑,而且通常用戶的版本更新并不會(huì)及時(shí)啥刻,這將導(dǎo)致新方案不能及時(shí)覆蓋所有用戶。雖然現(xiàn)在部分埋點(diǎn)管理后臺(tái)也支持熱配置更新咪笑,但功能一般都很弱可帽,只支持一些基礎(chǔ)的埋點(diǎn)事件熱更新部署,
注意:
很多時(shí)候并不把后端埋點(diǎn)獨(dú)立出來窗怒,而是混合在前端埋點(diǎn)中映跟,等用戶和服務(wù)器端的交互返回結(jié)果之后,將結(jié)果進(jìn)行上報(bào)扬虚。
對(duì)一下需要精確采集的數(shù)據(jù)申窘,比如代金券發(fā)放等,實(shí)施的時(shí)候盡量采用后端埋點(diǎn)孔轴,除非后端無法采集到所需要的數(shù)據(jù),前端埋點(diǎn)只是用來參考碎捺。此外也可以將業(yè)務(wù)數(shù)據(jù)庫(kù)代金券領(lǐng)取數(shù)據(jù)同步到數(shù)據(jù)倉(cāng)庫(kù)中進(jìn)行分析路鹰。
參考資料
數(shù)據(jù)埋點(diǎn)之認(rèn)識(shí)埋點(diǎn)?http://www.reibang.com/p/e3a315b8849e
如何做到不必埋點(diǎn)即可采集到齊全的用戶行為點(diǎn)擊流數(shù)據(jù)? - 喬一鴨的回答 - 知乎?https://www.zhihu.com/question/38000812/answer/233650905
growingio?https://docs.growingio.com/