1. 程式人生 > >友盟(三)高階功能

友盟(三)高階功能

一、自定義事件       自定義事件可以實現在應用程式中埋點來統計使用者的點選行為,比如:統計使用者的點選事件,統計使用者都點選了什麼;統計使用者搜尋的關鍵字,看使用者都偏好什麼產品等等。自定義事件目前包括:計數事件和計算事件。      計數事件:計數事件統計事件的發生次數、獨立使用者數、事件時長及事件各引數的發生次數、時長。      程式中的某些事件,如登入、分享、下載等,是定性變數(categorical variable),對應的統計項是字串型別。開發者只需瞭解它們發生的次數及獨立使用者數,使用計數事件即可滿足。

     計算事件:還有一些事件,如支付金額、內容瀏覽數量等是連續變數,對應的統計項是數值型別。開發者需要檢視這些事件的數值分佈特徵,這就需要使用

計算事件

計算事件可以解決的一些問題:
(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微博id
String 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之類的方法殺死程序,請務必在此之前呼叫此方法,用來儲存統計資料。