第一類是代碼埋點(diǎn),即在需要埋點(diǎn)的節(jié)點(diǎn)手動(dòng)調(diào)用接口上傳埋點(diǎn)數(shù)據(jù),友盟、百度統(tǒng)計(jì)等第三方數(shù)據(jù)統(tǒng)計(jì)服務(wù)商大都采用這種方案;
第二類是可視化埋點(diǎn),即通過可視化工具配置采集節(jié)點(diǎn),在前端自動(dòng)解析配置并上報(bào)埋點(diǎn)數(shù)據(jù),從而實(shí)現(xiàn)所謂的“無痕埋點(diǎn)”, 代表方案是已經(jīng)開源的Mixpanel;
第三類是“無埋點(diǎn)”,它并不是真正的不需要埋點(diǎn),而是前端自動(dòng)采集全部事件并上報(bào)埋點(diǎn)數(shù)據(jù),在后端數(shù)據(jù)計(jì)算時(shí)過濾出有用數(shù)據(jù),代表方案是國(guó)內(nèi)的GrowingIO。
無埋點(diǎn)數(shù)據(jù)需求
- 小程序的初始化執(zhí)行情況上報(bào)
- 接口請(qǐng)求上報(bào)
- 錯(cuò)誤上報(bào)
- 用戶行為上報(bào)
針對(duì)微信小程序開發(fā)無埋點(diǎn)sdk的難點(diǎn)及重點(diǎn)
無法直接攔截/監(jiān)聽請(qǐng)求 微信請(qǐng)求統(tǒng)一通過微信API完成 ,請(qǐng)求模塊已被微信方封裝,且小程序的運(yùn)行環(huán)境不是瀏覽器對(duì)象,不像web應(yīng)用那樣重寫封裝很自如。
三種運(yùn)行環(huán)境的監(jiān)控兼容性保證
Android 上,js運(yùn)行環(huán)境是 X5 內(nèi)核
iOS 上,js 運(yùn)行環(huán)境是 JavaScriptCore
開發(fā)工具上, j s運(yùn)行環(huán)境是 nwjs(chrome內(nèi)核)
用戶行為無法直接監(jiān)聽
強(qiáng)拓展性 需要適用于多種架構(gòu)設(shè)計(jì)場(chǎng)景(小程序)下使用
sdk需輕量 每個(gè)小程序的包存在2M的限制,并且小程序并不支持在代碼中引入npm包,故sdk本身會(huì)占用2M的大小限制。雖然小程序有分包的內(nèi)測(cè),但該功能未完全放開,再者作為一個(gè)sdk體積過大也是不合理的。
數(shù)據(jù)收集量大,盡量減少性能損耗
不影響業(yè)務(wù)(基本需求)
小程序無埋點(diǎn)sdk設(shè)計(jì)
數(shù)據(jù)層設(shè)計(jì):
數(shù)據(jù)流走向設(shè)計(jì):
采集方式設(shè)計(jì):
接入方式:
import Prajna from './lib/prajna-wxapp-sdk.js';
Prajna.init({channel: 'channel',env: config.IS_PRODUCION ? 'product': 'beta',project: 'yourProjectName',methodConfg: {} // 業(yè)務(wù)特殊關(guān)注的方法執(zhí)行和自定義打點(diǎn)名稱})
小程序無埋點(diǎn)SDK中遇到的問
灰度上線,簡(jiǎn)單點(diǎn)理解就是按產(chǎn)品需求優(yōu)先級(jí),抽出核心需求,在滿足用戶基本要求的情況下快速上線,并通過限制流量、白名單等機(jī)制進(jìn)行產(chǎn)品試用,以此收集用戶的意...
無埋點(diǎn)或者全埋點(diǎn)可以通過一個(gè)配置文件來讓前端過濾,然后傳給后端,節(jié)省流量