友盟(三)高階功能
計算事件:還有一些事件,如支付金額、內容瀏覽數量等是連續變數,對應的統計項是數值型別。開發者需要檢視這些事件的數值分佈特徵,這就需要使用
計算事件可以解決的一些問題:
(1)對某個引數值求和
(2)計算某個引數值的單次均值及單使用者均值
(3)近似得到某個引數值的概率分佈函式[1]
(4)近似得到某個引數值的累計分佈函式[2]
二、使用計數事件
1.瞭解計數事件的基本概念
事件ID是事件的標識,必須先在友盟後臺進行建立,在程式碼中傳送事件資料時,事件ID必須和後臺一致。
事件ID不能使用特殊字元和ID、ts、du欄位,並且長度在128位元組內。
應用最多可以自定義500個事件(事件ID),每個事件最後又10個key,每個key最多1000g個取值。
2.建立事件ID
注意:
①事件ID是事件的標識,所以是唯一的,事件名稱是事件ID的解釋,方便理解。
②一些定性的操作,比如:登入次數、搜尋次數、註冊次數、進入購物車次數等,這些用計數事件;但是搜尋關鍵詞、賬單金額等,這些資訊是不確定的,有變化的取值,用計算事件。
3.整合計數事件
①統計事件的發生次數
呼叫下面的方法傳送資料
MobclickAgent.onEvent(Context context,String eventId);
引數2:事件ID必須和後臺設定的保持一致
例子:統計使用者登入的次數:
MobclickAgent.onEvent(LoginActivity.this,"login");
②統計點選行為的各屬性發生次數
MobclickAgent.onEvent (Context context,String eventId,HashMap<String,String> map);
例子:統計新增到購物車的產品
HashMap<String,String> map =newHashMap<String,String>();
map.put("category","Gadgets");
map.put("sku",""+1225);
map.put("price","$12.89");
MobclickAgent.onEvent(mContext,"add to cart", map);
三、使用計算事件
1.配置
友盟後臺新增事件,配置為計算事件,方式和技術事件一樣。2.統計數值型變數的值的分佈 統計一個數值型別的連續變數,該變數必須為整數,使用者每次觸發的數值的分佈情況,如時間持續時間、每次付款金額等。 3.統計方法
MobclickAgent.onEventValue(Context context,String id,Map<String,String> m,int du)
引數2:事件ID
引數3:事件的屬性和取值
引數4:事件的數值,取值範圍:-2,147,483,648~+2,147,483,677之間的有符號整數,即int 32型別。如果超出了範圍,會造成資料包丟失。
4.例子分析
友盟示例:統計一次音樂播放,包括音樂型別、作者、時長,可以在音樂播放結束後呼叫。
int duration =12000;//開發者需要自己計算音樂播放時長
Map<String,String> map_value =newHashMap<String,String>();
map_value.put("type","popular");
map_value.put("artist","JJLin");
MobclickAgent.onEventValue(this,"music", map_value, duration);
四、在webview中統計事件
1.概念
所謂在webview中統計事件,指的是如果專案中的某個頁面使用了webview,並嵌入了html/js程式碼,並且希望統計html中的點選事件。2.使用步驟 ①實現MobclickAgentJSInterface介面。 這個介面是友盟提供的,有兩種形式: 如果例項化了WebChromeClient介面
publicMobclickAgentJSInterface(Context context,WebView webview,WebChromeClient client)
如果沒有例項化該介面
publicMobclickAgentJSInterface(Context context,WebView webview)
②初始化介面實現類的物件
WebView webview =(WebView) findViewById(R.id.webview);
newMobclickAgentJSInterface(Context, webview);
做完上面2步,其實Android端頁面的程式碼已經整合好了,現在需要做的是在HTML/JS頁面中新增點選事件,當用戶點選連線的時候,相應JS中的方法,傳送資料到友盟。
③在js頁面中新增2個方法
<scripttype="text/javascript">
function onEvent(tag, label, duration){
prompt("event", JSON.stringify({tag:tag,label:label, duration:duration}));
}
function onKVEvent(tag, map, duration){
map.id = tag;
map.duration = duration;
prompt("ekv", JSON.stringify( map ));
}
</script>
④在html頁面中設定點選事件
這裡相應的事件是自己新增的事件。
<aonClick="onEvent('click')"> SimpleEvent</a>
<aonClick="onEvent('click','button')"> EventWithLabel </a>
<aonClick="onEvent('play','music',123)"> EventWithLabelAndDuration </a>
<aonClick="onEvent('play','',123)"> EventWithDuration </a>
<aonClick="onKVEvent('buy',{'item':'gun'})"> KVEvent </a>
<aonClick="onKVEvent('play',{'music':'blue'},123)"> KVEventWithDuration </a>
這裡的點選事件和JAVA介面有如下對應關係//tag 傳入字串
onEvent(tag)->MobclickAgent.onEvent(Context context,String tag);
// tag ,label 傳入字串
onEvent(tag, label)->MobclickAgent.onEvent(Context context,String tag,String label);
// tag 傳入字串, 第二個變數 傳入空字串, du 傳入 數值型別
onEvent(tag,'', du)->MobclickAgent.onEvent(Context context,long duration);// tag, label 傳入字串, du 傳入數值型別onEvent(tag, label, du)->MobclickAgent.onEvent(Context context,String tag,String label,long du);// id 傳入字串, 第二個引數傳入 js 物件eg:{'item':'gun','type':'weapon'}onKVEvent(id,{})->MobclickAgent.onEvent(Context context,HashMap map);// id 傳入字串, 第二個引數傳入 js 物件eg:{'item':'gun','type':'weapon'}, du 傳入 數值型別onKVEvent(id,{}, du)->MobclickAgent.onEvent(Context context,HashMap map,long du);
3.原理分析
在java程式碼中,通過例項化介面物件,開啟了WebView事件統計功能,具體傳送資料由html/js來完成。html/js通過為點選事件響應友盟提供的方法,進行資料的傳送工作。在js提供的方法中,最後都會呼叫prompt()方法進行資料的傳送,友盟攔截到資料後,進行統計處理。 五、線上引數 略 六、錯誤統計 友盟sdk在V4.6版本之後開始內部集成了錯誤統計,自動傳送錯誤資訊到友盟伺服器,不需要開發者去整合。 sdk通過Thread.UncaughtExceptionHandler捕獲程式崩潰日誌,並在程式瑕疵啟動的時候傳送到友盟伺服器。友盟的資料統計都是在下一次啟動的時候,傳送上一次整個過程中的各種統計資料到友盟伺服器。 如果開發者想要自己捕獲錯誤資訊,手動傳送到友盟伺服器,可以呼叫下的方法:
publicstaticvoid reportError(Context context,String error)
//或
publicstaticvoid reportError(Context context,Throwable e)
七、社交統計
1.概念
社交統計:所謂社交統計就是針對社交行為的垂直統計,可以非常詳盡的統計應用中發生的各種社交行為。只需要呼叫一行程式碼,就可以獲得資料豐富的社交使用者分析報表。2.使用方法 比如:分享產品到新浪微博,呼叫下面的程式碼
UMPlatformData platform =newUMPlatformData(UMedia.SINA_WEIBO,"user_id");
platform.setGender(GENDER.MALE);//optional
platform.setWeiboId("weiboId");//optional
MobclickAgent.onSocialEvent(this, platform);
引數說明:
UMeida meida
平臺列舉型別(必填)String usid
使用者的id(必填)String weiboId
微博idString name
使用者姓名GENDER gender
使用者性別八、其它資料統計API
1.MobclickAgent.setAutoLocation(boolean enable)
設定是否允許收集地理位置資訊(預設true) 2.MobclickAgent.setOpenGLContext(GL10 gl)
設定openGL 資訊,輔助統計GPU 資訊
3.MobclickAgent.onKillProcess(Context context)
如果開發者呼叫Process.kill
或者System.exit
之類的方法殺死程序,請務必在此之前呼叫此方法,用來儲存統計資料。