現在App埋點一般採用talkingdata或者友盟,如果要我們自己實現埋點功能,該怎麼做呢?個人覺得一個好的埋點庫應該具有如下功能:

1、支持實時上報和非實時上報。

實時上報即立馬上報數據;非實時上報即上報數據不立馬上報,存儲到本地文件,在合適的時機再上報。

2、實時上報支持內存緩存及上報頻率。

為了減少頻繁發起網絡請求的次數和流量的浪費,實時上報數據內存緩存支持設定最大緩存個數和最大緩存大小,當超過這兩個閾值之一時,就直接把內存緩存的數據全部上報。支持上報頻率,比如1分鐘上報一次。

3、非實時上報支持磁盤緩存和上報頻率。

因為非實時上報不要求立馬上報,所以要把數據存儲到本地,存儲方式可以選用json、archive、數據庫等;支持上報頻率,比如半小時上報一次。

4、上報時機。

實時上報可以在調用上報接口、定時器掃描、應用程序退出、程序進後台時進行上報;非實時上報接口可以在定時器掃描、應用程序退出、程序進後台時進行上報。

5、上報數據需要壓縮後上報。

6、上報規則支持後端可配。

後端可以根據客戶端網絡類型下發不同的上報參數,比如調整最大緩存個數、上報頻率等。

7、配合aspect來上報,實現代碼無侵入性。

上報最好做到跟業務無關,配合使用aspect來實現。

8、如何實現無痕埋點?

iOS無埋點數據SDK實踐之路

分享