埋點(diǎn)方式方法研究

第一類是代碼埋點(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é)省流量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容