安卓這邊有具體的監聽事件能夠監聽到view進入和移出屏幕的事件。 bash
在監聽到view進入屏幕這一事件的同時,咱們記錄下當前時間戳,而後在view移出屏幕時,再獲取下時間戳,用這個時間戳減去進入屏幕的時間戳,就能夠求出view在屏幕的停留時間。ide
這裏有一個特殊的狀況。當用戶進入商城,切換tab或者進入商品詳情頁時,view並無從屏幕移出,而是隱藏不可見了。這種特殊狀況的統計,就要用到另一個監聽事件了。佈局
用戶行爲 | 怎麼監聽 |
---|---|
進入商城->切換tab | 計算當前屏幕裏全部view從用戶進入商城到切換tab的時間差 |
進入商城->進入詳情頁 | 計算當前屏幕裏全部view從用戶進入商城到進詳情的時間差 |
進入商城->點home鍵 | 計算當前屏幕裏全部view從用戶進入商城到點home鍵的時間差 |
進入商城->熄屏 | 計算當前屏幕裏全部view從用戶進入商城到點home鍵的時間差 |
把數據綁定到view裏,須要自定義系統view,給系統view添加存儲數據的功能。 這裏以組件view和組件裏的元素view爲例spa
組件view 3d
元素view code
上面把自定義view寫到佈局裏之後,就須要在代碼裏設置數據了。設置數據的方法以下:component
圖中的holder.itemView就是咱們的ExLinearLayout, knowledge就是咱們當前條目所顯示的數據。這樣就能夠把數據綁定到view裏了。cdn
再看下recordExposure方法具體作了什麼 blog
到這裏咱們綁定數據這一步就完成了。這也是最重要的一步。由於只有把數據成功綁定到view裏,後面才能從view裏取數據。繼承
上面第三步已經把數據綁定到view裏了,咱們拿數據就比較方便了。 咱們只須要在view移出屏幕,或者view進入後臺不可見時獲取當前時間戳和view剛進入屏幕時的時間戳求差,大於2秒時,就取view裏的數據。
{
"micro_page_name": "我是主頁",
"micro_page_id": "3",
"micro_cindex": 3,
"component_name": "",
"micro_component_type": "groupbuyBargainList",
"micro_component_sindex": 1,
"exposure_content": "爲全文",
"exposure_content_link": "http:\/\/m.ngmm001.com\/goods\/32702?componentName=groupbuyBargin-list",
"exposure_id": "32702"
}
複製代碼
拿到這些數據後,咱們再作下有效曝光時間判斷。好比view從進入屏幕綁定數據到移出屏幕的時間差大於2秒,纔算有效曝光,才作數據上傳。
如咱們把有效的曝光數據上傳到神策數據後臺。
這裏咱們就要定義一個曝光策略字典了,這個字典經過如下幾個步驟來告知咱們須要統計那些數據
如咱們想統計
就要定義以下曝光字典
{
"page": ["*"],
"event": [{
"eventName": "exposure",
"time": 2,
"area": 0.5
}, {
"eventName": "click"
}],
"component": ["slider", "banner","knowledgeList", "goodsList"]
}
複製代碼
簡單說下上面數據格式。 page字段:表明咱們要統計那些頁面,若是是 * 表明全部頁面都統計 event字段:表明咱們要統計那些事件,如曝光事件,點擊事件。 component字段:表明咱們要統計那些組件,若是是 * 就統計全部組件。
而後我根據上面的曝光字典去過濾出運營所須要的數據,這個曝光字典是能夠動態配置的。統計那些數據所有由曝光字典來定義。
如咱們想統計知識結果下每一個條目的曝光數據
1,用自定義ExLinearLayout替換咱們的根佈局LinearLayout
2,到知識對應的viewholder,就是能獲取到數據的地方,把數據綁定到view
咱們只須要作這兩步,就能夠輕鬆實現曝光的統計了。
後面還會有結合曝光的點擊數據上傳。就是用來統計從曝光到點擊的轉化率用的。 點擊統計是基於上面兩步的基礎上作的。咱們要統計曝光組件點擊統計只須要在點擊的地方寫入下面代碼便可。
by 年糕媽媽:qcl