麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > 小程序 > 正文

小程序從手動埋點到自動埋點的實現方法

2020-03-21 16:02:22
字體:
來源:轉載
供稿:網友

前言

小程序由于封閉性較強,要像web應用一樣實現靈活的數據收集,會有一定難度。目前開源的埋點SDK,一般采用手動埋點的方式,這種方式有較強的侵入型,為了解決這個問題就有了該文章。

手動埋點

以騰訊移動分析的SDK為例,如果要記錄埋點信息,只要插入一句代碼即可

// 例如,記錄搜索行為search(keyword) {  if (keyword) {    ...業務代碼  }  mta.Event.stat("ico_search", {"query":keyword});}

示例代碼看起來是比較簡潔的,但是埋點需要收集的數據往往不是單一的,復雜的埋點代碼插入業務代碼,會 影響代碼的閱讀體驗 ,而且 埋點代碼散落在各個地方,不方便管理 。

由于手動埋點必須插入到函數中,有時候我們為了獲取頁面某一元素點擊信息,產生了一種叫無業務相關埋點,簡單來說就是你的函數定義,就只有埋點代碼,當這種埋點頻繁出現, 代碼會被嚴重污染 。

// wxml<view bindtap="track">這只是一個展示view</view>
//js track() { mta.Event.stat("eleClick", {"name":xxxxx});}

另外,由于PM會頻繁調整埋點信息,而 埋點是一個繁瑣又無聊的工作 ,基于Don't Repeat Yourself 原則,手動埋帶要不得。

總結以上,手動埋點有下列問題

  • 影響代碼的閱讀體驗
  • 埋點代碼散落在各個地方,不方便管理
  • 代碼會被污染
  • 埋點是一個繁瑣又無聊的工作

自動埋點

實現思路:監聽用戶點擊-->讀取埋點配置JOSN,判斷是否需要上報--> 上報數據

1、小程序監聽用戶點擊行為

web應用監聽用戶點擊行為是比較容易,但是小程序沒有提供Dom的事件監聽,不過我們可以通過事件冒泡的方式捕獲。

// web監聽頁面點擊document.addEventListener('click',(e) => {console.log(e)})// 小程序監聽頁面點擊,用戶的點擊行為都會執行elementTracker方法<view catchtap='elementTracker'> <view class='buy-now'>   <button bindtap='buy' animation="{{scaleAnim}}">立即購票</button> </view></view>

2、判斷點擊位置是否落在監聽元素中

假設需要監聽用戶是否點擊class為buy-now元素,可以通過獲取buy-now元素長寬,定位和點擊位置坐標判斷是否出現重疊,以判斷是否被點擊。

/** * 判斷點擊是否落在目標元素 * @param {Object} clickInfo 用戶點擊坐標 * @param {Object} boundingClientRect 目標元素信息 * @param {Object} scrollOffset 頁面位置信息 * @returns {Boolean} */export const isClickTrackArea = function (clickInfo, boundingClientRect, scrollOffset) {  if (!boundingClientRect) return false;  const { x, y } = clickInfo.detail; // 點擊的x y坐標  const { left, right, top, height } = boundingClientRect;  const { scrollTop } = scrollOffset;  if (left < x && x < right && scrollTop + top < y && y < scrollTop + top + height) {    return true;  }  return false;};

3、通過配置表聲明埋點

為了解決代碼入侵問題,可以將所有埋點信息統一管理,通過配置表的方式,除了方便管理,以后還可以做到動態配置,在服務端配置完畢下發到客戶端。

const tracks = { path: 'pages/film/detail', elementTracks: [  {   element: '.buy-now', // 聲明需要監聽的元素   dataKeys: ['film.filmId'], // 聲明需要獲取Data下的哪些數據  }, ]};

4、對頁面函數埋點

有些場景我們除了對頁面元素點擊埋點,還要對頁面函數進行埋點,例如用戶下拉刷新的時候,可以對原方法進行包裝,插入埋點代碼。

rewritePage() {  const originPage = Page;  Page = (page) => {   Object.keys(page).forEach((methodName) => {    // 執行埋點邏輯    typeof page[methodName] === 'function' && this.recordPageFn(page, methodName);   });   // 執行原Page對象   return originPage(page);  }; }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费欧美一级视频 | 姑娘第5集高清在线观看 | 一级做受毛片免费大片 | 久久成人免费网站 | 欧美综合在线观看视频 | 欧洲成人精品 | 国产激情精品一区二区三区 | 免费在线观看国产精品 | 日韩一级免费毛片 | 91短视频网页版 | 久久久久久久久久亚洲 | 男女污污视频网站 | www.guochan| 欧美成人激情 | 13一14毛片免费看 | 高清国产午夜精品久久久久久 | 美女在线观看视频一区二区 | 亚洲午夜激情网 | 国产成人综合在线观看 | 牛牛a级毛片在线播放 | 日韩黄站| 久久成人综合网 | 婷婷久久青草热一区二区 | 91九色免费视频 | 亚洲一区在线免费视频 | 色吧久久 | 久久影库 | 国产精品美女久久久久久不卡 | 91精品国产91 | 久久久成人免费视频 | 综合日韩欧美 | 黄色影院一级片 | 91精品国产综合久久青草 | 国产91久久久久久 | 欧美精品毛片 | 欧美一区2区三区4区公司二百 | 中午字幕无线码一区2020 | 91成人在线免费视频 | 欧美性生活久久 | 国产黄色录像片 | 国产精品嘿咻嘿咻在线播放 |