無(wú)埋點(diǎn)技術(shù)總結(jié)

最近無(wú)埋點(diǎn)技術(shù)很是流行,抽空研究了下諸葛IO锻全,talkingData以及百分點(diǎn)這些業(yè)內(nèi)知名公司的無(wú)埋點(diǎn)SDK狂塘,抽取其中重要的信息供大家參考:
1、首先什么是無(wú)埋點(diǎn)呢鳄厌,其實(shí)所謂無(wú)埋點(diǎn)就是開發(fā)者無(wú)需再對(duì)追蹤點(diǎn)進(jìn)行埋碼燥爷,而是脫離代碼礁遣,只需面對(duì)應(yīng)用界面圈圈點(diǎn)點(diǎn)即可追加隨時(shí)生效的事件數(shù)據(jù)點(diǎn)瓷炮。


無(wú)埋點(diǎn)的好處


其實(shí)無(wú)埋點(diǎn)并不是完全不用寫代碼咧七,而是盡可能的少寫代碼。開發(fā)者將SDK集成到項(xiàng)目中,配置并初始化SDK之后窖梁,接下來(lái)就可以進(jìn)行可視化操作赘风。這個(gè)可以不依賴開發(fā)者夹囚,一些實(shí)施人員都是通過(guò)后臺(tái)的配制纵刘,就達(dá)到埋點(diǎn)的配制,還有新增埋點(diǎn)改動(dòng)都是很方便的實(shí)現(xiàn)荸哟。最后就是配制和代碼假哎,可以很靈活地?cái)U(kuò)展,動(dòng)態(tài)地更新鞍历。
2舵抹、上面我們寫道無(wú)埋點(diǎn)要進(jìn)行可視化操,參考百分點(diǎn)劣砍、talkingData采用相對(duì)簡(jiǎn)單可行的辦法是對(duì)當(dāng)前的屏幕進(jìn)行截圖惧蛹,截圖完了以后做一些處理。做一些壓縮刑枝,然后傳到服務(wù)端香嗓,服務(wù)端進(jìn)行展現(xiàn),就把屏幕截圖展現(xiàn)出來(lái)装畅。屏幕截圖做完了靠娱,下一步,需要在管理界面進(jìn)行配置掠兄,對(duì)于可點(diǎn)擊的組件進(jìn)行配置像云,就需要把這些界面框起來(lái)展現(xiàn)給使用者。下面是截取的talkingData的可視化操作為例蚂夕,為大家展示可視化埋點(diǎn)的流程:
項(xiàng)目嵌碼之后迅诬,進(jìn)入可視化鏈接頁(yè)面,搖一搖連接設(shè)備:


搖一搖婿牍,連接設(shè)備

鏈接成功之后百框,平臺(tái)獲取當(dāng)前界面截圖:


平臺(tái)自動(dòng)獲取連接設(shè)備當(dāng)前界面

為要統(tǒng)計(jì)的界面元素命名事件,添加追蹤點(diǎn)牍汹,至此埋點(diǎn)操作完成:


選擇界面中的元素來(lái)追加事件

這里需要指出一下铐维,無(wú)埋點(diǎn)只是針對(duì)一些簡(jiǎn)單的操作統(tǒng)計(jì),如按鈕點(diǎn)擊的次數(shù)慎菲、時(shí)間等嫁蛇。如果是比較復(fù)雜的應(yīng)用場(chǎng)景,例如支付事件露该,需要統(tǒng)計(jì)商品名稱睬棚、價(jià)格、數(shù)量等,這就需要通過(guò)埋點(diǎn)來(lái)收集詳細(xì)的參數(shù)抑党。
3包警、無(wú)埋點(diǎn)實(shí)現(xiàn)方式:
整個(gè)技術(shù)里面比較關(guān)鍵的一點(diǎn)是怎么拿到屏幕控件信息。這一塊兒主要就是三個(gè)問(wèn)題底靠。第一害晦,就是獲取時(shí)機(jī)。第二暑中,就是拿控件什么信息壹瘟,什么信息是需要用到的。第三鳄逾,就是比較關(guān)鍵的稻轨,如何生成控件的唯一ID,ID是在程序內(nèi)部生成雕凹。需要保證在不同的手機(jī)上面殴俱,這些ID是一樣的。還要保證每一次啟動(dòng)ID都是不變枚抵。
首先是Android:




然后线欲,接下來(lái)我們可以看一下iOS,同樣的俄精,也是面臨三個(gè)問(wèn)題:




iOS無(wú)埋點(diǎn)的核心技術(shù)是利用蘋果的runtime機(jī)制询筏,把系統(tǒng)事件、點(diǎn)擊事件的指針替換成我們自己的函數(shù)來(lái)監(jiān)測(cè)用戶的操作竖慧,我們?cè)谧约旱暮瘮?shù)中采集并發(fā)送需要的數(shù)據(jù)嫌套。
4、遇到的問(wèn)題和解決辦法
第四部分圾旨,講一下我們?cè)趯?shí)現(xiàn)無(wú)埋點(diǎn)技術(shù)的時(shí)候踱讨,遇到了什么坑?以及采用什么方法來(lái)解決這些坑砍的。
長(zhǎng)連接斷開的問(wèn)題痹筛,我們之前是設(shè)計(jì)每隔5秒發(fā)送一次截圖,一般不會(huì)產(chǎn)生斷開廓鞠。但是帚稠,后面做了一些優(yōu)化,我們不會(huì)每隔5秒就發(fā)床佳,這樣就會(huì)導(dǎo)致這個(gè)鏈路長(zhǎng)時(shí)間沒有數(shù)據(jù)滋早。然后,我們解決方法也是采取了業(yè)界通用的方法砌们,發(fā)一個(gè)心跳杆麸,通過(guò)發(fā)一個(gè)心跳來(lái)保證這個(gè)鏈路一直是活著的搁进。
第二個(gè)問(wèn)題就是搖一搖遇到的問(wèn)題,我們遇到的問(wèn)題是這樣的昔头,你拿著手機(jī)搖一搖饼问,什么時(shí)候連接成功呢?你得給用戶一個(gè)反饋揭斧,要不用戶就是一直搖下去莱革,我們后來(lái)想的方法是,搖成功給他一個(gè)振動(dòng)未蝌,振動(dòng)了驮吱,用戶有反饋茧妒,就知道這個(gè)連接成功了萧吠,不需要搖了桐筏。然后梅忌,就是帶來(lái)另外一個(gè)問(wèn)題狰腌。有時(shí)候運(yùn)動(dòng)當(dāng)中,又會(huì)產(chǎn)生一些誤操作丹莲,就是導(dǎo)致手機(jī)會(huì)振一下甥材。這個(gè)怎么解決呢?我們就想了一下叠萍,可以通過(guò)給服務(wù)端有一個(gè)交互,管理界面里面發(fā)現(xiàn)有一個(gè)請(qǐng)求過(guò)來(lái)要連了會(huì)有一個(gè)確認(rèn)的按鈕瓢湃,用戶確認(rèn)之后,SDK收到確認(rèn)消息以后落蝙,我們?cè)偃フ駝?dòng)。這樣的話管行,既可以給用戶反饋,也不會(huì)說(shuō)在它誤操作情況下振動(dòng)迅涮。這樣就不會(huì)造成誤操作,也不會(huì)無(wú)緣無(wú)故地進(jìn)行振動(dòng)传透。
界面?zhèn)鬏數(shù)膬?yōu)化讼昆,因?yàn)樵谡麄€(gè)配制過(guò)程當(dāng)中闰围,傳輸數(shù)據(jù)量最大的就是屏幕的截圖运敢。怎么把這個(gè)優(yōu)化一下迄沫?就可以更好地提升我們的體驗(yàn)度,還有流暢性。圖片采用jpeg格式黔宛,把圖片質(zhì)量選擇0.6酗宋,剛好是可以看清楚的哎迄。然后,也最大限度地降低了這個(gè)圖片大小漱挚。
然后翔烁,整個(gè)傳輸效率蹬屹,有這樣一個(gè)問(wèn)題。我在當(dāng)前界面管搪,默認(rèn)就是5秒傳一次。我點(diǎn)了一下樊拓,我在當(dāng)前一個(gè)列表界面纠亚,點(diǎn)了一下切換到詳情界面。最壞的情況下就是等5秒筋夏,加上網(wǎng)絡(luò)傳輸效果骗随,管理界面就看到新的屏幕。這種體驗(yàn)是很差的赴叹,因?yàn)閷?shí)時(shí)性太差鸿染。所以,這一塊做了一個(gè)優(yōu)化乞巧。盡量讓它實(shí)時(shí)傳過(guò)去涨椒,我們?cè)谄聊磺袚Q的時(shí)候,主動(dòng)發(fā)一次截圖绽媒。這樣的話蚕冬,等的時(shí)間就是網(wǎng)絡(luò)傳輸?shù)臅r(shí)間,不用等5秒固定的時(shí)間是辕。這一塊用戶體驗(yàn)上面就是更流暢一些囤热。
有的時(shí)候屏幕界面沒有任何的變化的,這個(gè)時(shí)候每隔5秒傳一次沒有必要的获三。所以旁蔼,我們把屏幕截圖做一個(gè)md5進(jìn)行保留,傳輸時(shí)對(duì)比md5石窑,當(dāng)切換到下一個(gè)的時(shí)候牌芋,我們就發(fā)新的屏幕截圖。這樣就會(huì)減少很多不必要的屏幕的傳輸松逊。然后躺屁,也會(huì)節(jié)省很多的流量。
控件ID重復(fù)的問(wèn)題经宏。前面說(shuō)過(guò)我們的ID生成規(guī)則可以解決90%的問(wèn)題犀暑,但是驯击,有一些問(wèn)題還是解決不了。生成ID重復(fù)耐亏,重復(fù)的話就會(huì)產(chǎn)生一個(gè)什么樣的效果和問(wèn)題徊都?同樣兩個(gè)按紐,一個(gè)注冊(cè)广辰,對(duì)于注冊(cè)定義了一個(gè)埋點(diǎn)暇矫,就是注冊(cè)點(diǎn)擊,用戶實(shí)際操作的時(shí)候點(diǎn)登陸的時(shí)候也是發(fā)過(guò)來(lái)一個(gè)注冊(cè)點(diǎn)擊消息择吊。這樣就是統(tǒng)計(jì)不準(zhǔn)李根,因?yàn)檫@種比較的特殊,我們采用的解決方案几睛,通過(guò)服務(wù)端發(fā)一些特殊配制房轿。把這些配制里面,因?yàn)檫@兩個(gè)button里的text不一樣所森,一個(gè)是注冊(cè)囱持,一個(gè)是登陸。我們把text信息放在ID的這個(gè)生成規(guī)則里面焕济,最終生成兩個(gè)不同的ID纷妆,也是可以解決這個(gè)問(wèn)題。
還有一個(gè)難點(diǎn)通過(guò)可視化埋點(diǎn)的事件名稱會(huì)先通過(guò)平臺(tái)傳到服務(wù)器吼蚁,服務(wù)器再傳給所有用戶APP中的SDK凭需,SDK進(jìn)行判別是哪個(gè)界面的哪個(gè)事件被動(dòng)態(tài)埋點(diǎn)了,然后進(jìn)行統(tǒng)計(jì)肝匆,并發(fā)送數(shù)據(jù)到后臺(tái)進(jìn)行統(tǒng)計(jì)分析。判斷某個(gè)界面的某個(gè)事件應(yīng)該會(huì)比較棘手顺献,在這里先做一個(gè)標(biāo)記旗国。
當(dāng)然在寫SDK的過(guò)程中肯定還有很多的坑,我會(huì)在以后的時(shí)間里一一記錄下來(lái)注整,同時(shí)也歡迎大家提出自己的見解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末能曾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肿轨,更是在濱河造成了極大的恐慌寿冕,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椒袍,死亡現(xiàn)場(chǎng)離奇詭異驼唱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)驹暑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門玫恳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辨赐,“玉大人,你說(shuō)我怎么就攤上這事京办∠菩颍” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵惭婿,是天一觀的道長(zhǎng)不恭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)财饥,這世上最難降的妖魔是什么县袱? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮佑力,結(jié)果婚禮上式散,老公的妹妹穿的比我還像新娘。我一直安慰自己打颤,他們只是感情好暴拄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著编饺,像睡著了一般乖篷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上透且,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天撕蔼,我揣著相機(jī)與錄音,去河邊找鬼秽誊。 笑死鲸沮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锅论。 我是一名探鬼主播讼溺,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼最易!你這毒婦竟也來(lái)了怒坯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤藻懒,失蹤者是張志新(化名)和其女友劉穎剔猿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嬉荆,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡归敬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弄慰。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡第美,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陆爽,到底是詐尸還是另有隱情什往,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布慌闭,位于F島的核電站别威,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驴剔。R本人自食惡果不足惜省古,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丧失。 院中可真熱鬧豺妓,春花似錦、人聲如沸布讹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)描验。三九已至白嘁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膘流,已是汗流浹背絮缅。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呼股,地道東北人耕魄。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像卖怜,于是被迫代替她去往敵國(guó)和親屎开。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 最近無(wú)埋點(diǎn)技術(shù)很是流行马靠,抽空研究了下諸葛IO,talkingData以及百分點(diǎn)這些業(yè)內(nèi)知名公司的無(wú)埋點(diǎn)SDK蔼两,抽取...
    woniu閱讀 17,674評(píng)論 17 44
  • 在這篇文章里面甩鳄,我們會(huì)對(duì)數(shù)據(jù)采集的一些基本概念進(jìn)行闡述,然后额划,會(huì)針對(duì)目前市面上新增的一些前端埋點(diǎn)技術(shù)妙啃,如可視化埋點(diǎn)...
    言射手閱讀 6,606評(píng)論 1 52
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評(píng)論 25 707
  • 版權(quán)歸屬于微信公眾號(hào)文章網(wǎng)易HubbleData之Android無(wú)埋點(diǎn)實(shí)踐文末有彩蛋哦? 1 背景 網(wǎng)易Hubbl...
    nailperry閱讀 8,251評(píng)論 3 31
  • 新月初升云隨風(fēng),夜幕落去晚歸程。 幾經(jīng)風(fēng)雨擾初夏揖赴,綠意一路灑向東馆匿。 ——巍巍&我
    Oak水木閱讀 143評(píng)論 0 0