個(gè)人使用友盟統(tǒng)計(jì)的心得:
注冊:友盟后臺的應(yīng)用名與實(shí)際應(yīng)用名和包名無關(guān),建議命名為“應(yīng)用名+平臺(IOS/Android)”。
統(tǒng)計(jì)場景設(shè)置:
MobclickAgent.setScenarioType(Context context, EScenarioType etype) ;
(常用類型:EScenarioType. E_UM_NORMAL 普通統(tǒng)計(jì)場景類型)Appkey配置:
如果不想在Manifest中配置,希望在代碼中配置Appkey、Channel、Token(Dplus)等信息,請?jiān)诔绦蛉肟谔幷{(diào)用如下方法: MobclickAgent. startWithConfigure(UMAnalyticsConfig config)友盟方法理解 / session的統(tǒng)計(jì):
4.1 在需要統(tǒng)計(jì)的Activity中調(diào)用 MobclickAgent.onResume() 和MobclickAgent.onPause();
(用于獲取正確的新增用戶、活躍用戶、啟動(dòng)次數(shù)、使用時(shí)長等基本數(shù)據(jù)(中用于Activity))
4.2 MobclickAgent.onPageStart() 和MobclickAgent.onPageEnd() ;
(用來統(tǒng)計(jì)具體是哪個(gè)在頁面跳轉(zhuǎn),(針對頁面,頁面可能是Activity 也可能是Fragment或View);)
4.3 MobclickAgent.setSessionContinueMillis(long interval);
(當(dāng)應(yīng)用在后臺運(yùn)行超過30秒(默認(rèn))再回到前端,將被認(rèn)為是兩個(gè)獨(dú)立的session(啟動(dòng)))
4.4 若開發(fā)者調(diào)用Process.kill或者System.exit之類的方法殺死進(jìn)程,請務(wù)必在此之前調(diào)用MobclickAgent.onKillProcess(Context context)方法,用來保存統(tǒng)計(jì)數(shù)據(jù)。
(注意:其實(shí)SDK 自動(dòng)幫助開發(fā)者調(diào)用了MobclickAgent.onPageStart() 和MobclickAgent.onPageEnd()方法,并把Activity 類名作為頁面名稱統(tǒng)計(jì),當(dāng)然我們可以重新調(diào)動(dòng)來實(shí)現(xiàn)命名。)
4.5 但在包含fragment的程序中我們希望統(tǒng)計(jì)更詳細(xì)的fragment頁面,就需要自己調(diào)用這兩個(gè)方法做更詳細(xì)的統(tǒng)計(jì)了,設(shè)置步驟如下:
1.調(diào)用 MobclickAgent.openActivityDurationTrack(false) 禁止默認(rèn)的頁面統(tǒng)計(jì)方式,這樣將不會再自動(dòng)統(tǒng)計(jì)Activity。
2.注意:要保證 onPageEnd 在onPause 之前調(diào)用,因?yàn)?onPause 中會保存信息,在程序入口處指的是應(yīng)用的第一個(gè)activity的onCreate()方法里。-
自定義事件:其目前包括“計(jì)數(shù)事件”和“計(jì)算事件”,計(jì)數(shù)事件統(tǒng)計(jì)事件的發(fā)生次數(shù)、獨(dú)立用戶數(shù)、事件時(shí)長及事件各參數(shù)的發(fā)生次數(shù)、時(shí)長,也就是顯示的是未處理的原生數(shù)據(jù)。計(jì)算事件是對原生數(shù)據(jù)的統(tǒng)計(jì)和處理,有利于我們直接對數(shù)據(jù)變化進(jìn)行分析,如均值,概率,累計(jì)分布等;
調(diào)用方式:
SDK是5.2.2版本以前,調(diào)用以下方法集成數(shù)值型自定義事件:public static void onEvent(Context context, String id, HashMap<String,String> m, int value){}
SDK是>=5.2.2版本,調(diào)用以下方法集成數(shù)值型事件:MobclickAgent.onEventValue(Context context, String id, Map<String,String> m, int du){}參考代碼: int duration = 12000; //開發(fā)者需要自己計(jì)算音樂播放時(shí)長 Map<String, String> map_value = new HashMap<String, String>(); map_value.put("type" , "popular" ); map_value.put("artist" , "JJLin" ); MobclickAgent.onEventValue(this, "music" , map_value, duration);
(參數(shù)說明:id 為事件ID;map為當(dāng)前事件的屬性和取值;du為當(dāng)前事件的數(shù)值(在計(jì)算事件中使用),取值范圍是-2,147,483,648 到 +2,147,483,647 之間的有符號整數(shù),即int 32整型,如果du數(shù)據(jù)值超過該范圍,會造成數(shù)據(jù)丟包,影響數(shù)據(jù)統(tǒng)計(jì)的準(zhǔn)確性。)
注:自定義事件至多傳遞10個(gè)參數(shù),且每個(gè)事件只能傳遞一個(gè)數(shù)值型參數(shù)。
數(shù)據(jù)測試,我們提供了兩種方式(debug模式下的測試),普通測試和集成測試。集成測的測試設(shè)備的數(shù)據(jù)是被隔離的,不會污染正常統(tǒng)計(jì)數(shù)據(jù): MobclickAgent.setDebugMode(true);
錯(cuò)誤統(tǒng)計(jì)是否開啟:MobclickAgent.setCatchUncaughtExceptions(false);
社交統(tǒng)計(jì):如分享了到新浪微博之后,調(diào)用這樣一行代碼:
UMPlatformData platform = new UMPlatformData(UMedia.SINA_WEIBO, "user_id");
platform.setGender(GENDER.MALE); //optional
platform.setWeiboId("weiboId"); //optional
MobclickAgent.onSocialEvent(this, platform);友盟在統(tǒng)計(jì)用戶時(shí)以設(shè)備為標(biāo)準(zhǔn),如果需要統(tǒng)計(jì)應(yīng)用自身的賬號(需使用5.6.1及以上版本SDK),請使用以下接口:
public static void onProfileSignIn(String ID) ;
public static void onProfileSignIn(String Provider, String ID) ;
public static void onProfileSignOff(); //賬號登出時(shí)需調(diào)用此接口,調(diào)用之后不再發(fā)送賬號相關(guān)內(nèi)容
(參數(shù)說明:ID:用戶賬號ID,長度小于64字節(jié);Provider:賬號來源。如果用戶通過第三方賬號登陸,可以調(diào)用此接口進(jìn)行統(tǒng)計(jì)。)