小程式自動埋點教學

2022-09-23 18:15:09 字數 1612 閱讀 8485

在這個大資料的時代裡,資料是乙個網際網路發展的核心,除了對客戶分析重要之外,公司對自己的產品能否客觀的掌控也十分重要。

埋點的意思是在專案關鍵位置注入**,**會向伺服器傳送裝置資訊、使用者操作、時間點等資訊。

最簡單實現埋點的方法,是讓開發者在需要的地方新增一句**,用來向伺服器發起請求,匯報情況

埋點的**和業務邏輯的**是沒有直接聯絡的,如果讓開發者手動的在專案中新增**,會增加專案耦合。不僅開發者麻煩,後期維護也增加了難度。所以能通過引入外部**,自動在最常用的位置注入埋點,是更合理的一種手段。

就web端而言,一般選擇的注入點有:頁面載入完成、使用者點選鏈結、登入登出等場景。

小程式app函式有:onlaunch、onshow、onhide、onerror、onpagenotfound五個週期方法,小程式啟動時會走onlaunch方法。

小程式有後台機制,當使用者關閉當前小程式,回到微信頁面時,小程式不會直接結束程序,而是到記憶體占用到了一定量後,微信會自動對小程式進行銷毀。

onshow與onhide兩個方法對應的就是小程式前後臺轉換,當使用者從微信到小程式時,onshow會被呼叫;反之,使用者從小程式到微信介面時,會呼叫onhide。

小程式每個頁面都是乙個page,每個page有:onload/onready/onshow/onhide/onunload/onshareappmessage/onpulldownrefresh等等週期方法。

在小程式各個生命週期埋點,可以有效的收集到使用者運算元據,正常小程式開發者,這些週期方法都是由開發者宣告的。開發者可以在週期方法中寫入匯報伺服器**,但就像之前說的,通過外部**實現這一功能會是更好的選擇。

所以我們需要一些功能**,實現自動注入埋點。

小程式像是乙個定製的webview,開啟app時,小程式首先會呼叫宣告的app函式,所以我們可以通過劫持app函式,注入埋點。

var oldapp = app

app = function(args)

複製**如以上**所示,劫持app函式後,進行改寫週期函式,最後執行真正的app函式。 args及為小程式app.js中配置的模型,包含了app的週期函式和globaldata物件,例如,要在onlaunch方法中注入埋點:

function customlaunch(opt)

var oldlaunch = args.onlaunch

args.onlaunch = function(opt)

customlaunch.call(this, opt) // 自定義週期方法

}複製**其他的週期方法,也可以用這種方式進行改寫。

每個應用的需求都會不一樣,所以也需要給自動埋點賦予自定義埋點的能力。 在每個page的index.js中,我們可以用getapp()方法獲取到小程式全域性物件,app函式中的this指向的就是這個全域性物件,所以我們可以在上面**塊中定義自定義埋點方法:

--- app.js

args.onlaunch = function(opt)

...}--- page的index.js

var app = getapp()

app.track(name) // 傳送自定義報文

複製**小程式天然的生命週期相對於web應用來說,對埋點需求友好很多,如何控制和實現視覺化埋點是我們需要努力的方向。

小程式自動埋點教程

在這個大資料的時代裡,資料是乙個網際網路發展的核心,除了對客戶分析重要之外,公司對自己的產品能否客觀的掌控也十分重要。埋點的意思是在專案關鍵位置注入 會向伺服器傳送裝置資訊 使用者操作 時間點等資訊。最簡單實現埋點的方法,是讓開發者在需要的地方新增一句 用來向伺服器發起請求,匯報情況 埋點的 和業務...

小程式強制自動更新

3 強制更新官方版 背景此前有開發者反饋小程式發布新版本後,新版本覆蓋率比較慢,因為小程式的更新機制是非同步的,部分使用者不會馬上應用上新版本。為了解決這個問題,我們內部也經歷了數個方案的討論,這裡簡單介紹下 2.模組熱替換 放棄 從技術上來說,這是最好的方案,小程式執行起來後,在開啟新頁面時,馬上...

微信小程式開發小知識點

在元件上使用 wx for 控制屬性繫結乙個陣列,即可使用陣列中各項的資料重複渲染該元件。預設陣列的當前項的下標變數名預設為 index,陣列當前項的變數名預設為 item。for 或者可以指定 使用 wx for item 指定陣列當前元素的變數名,使用 wx for index 指定陣列當前下標...