SDK集成
通過在工程build.gradle配置腳本中添加maven線上依賴,導(dǎo)入最新版本組件化基礎(chǔ)庫和統(tǒng)計SDK让虐。 在Gradle依賴中添加:
dependencies {
compile 'com.umeng.sdk:common:latest.integration'
compile 'com.umeng.sdk:analytics:latest.integration'
}
如果無法正常集成請?zhí)砑尤缦屡渲茫?/p>
allprojects {
repositories {
mavenCentral()
}
}
SDK初始化
在項目工程的自定義application中的onCreate方法中添加
注意: 如果項目的Manifest文件中已經(jīng)配置友盟的appkey和channel探颈,則使用該方法初始化考赛。
/**
*參數(shù)1:上下文踱卵,必須的參數(shù),不能為空l
參數(shù)2:設(shè)備類型犹芹,必須參數(shù),傳參數(shù)為UMConfigure.DEVICE_TYPE_PHONE則表示手機鞠绰;傳參數(shù)為UMConfigure.DEVICE_TYPE_BOX則表示盒子腰埂;默認為手機
參數(shù)3:Push推送業(yè)務(wù)的secret,需要集成Push功能時必須傳入Push的secret蜈膨,否則傳空
*/
UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, "1fe6a20054bcef865eeb0991ee84525b");
權(quán)限添加
<!-- 必須的權(quán)限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- 推薦的權(quán)限 -->
<!-- 添加如下權(quán)限屿笼,以便使用更多的第三方SDK和更精準的統(tǒng)計數(shù)據(jù) -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
AndroidManifest清單配置文件方式初始化appkey和channel
<manifest>
<application ……>
……
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>
</manifest>
常用接口
設(shè)置Log開關(guān)
/**
* 參數(shù): boolean 默認為false,如需查看LOG設(shè)置為true
*/
UMConfigure.setLogEnabled(true);
設(shè)置日志加密
/**
* 參數(shù):boolean 默認為false(不加密)
*/
UMConfigure.setEncryptEnabled(true);
統(tǒng)計
session統(tǒng)計
在每個Activity的onResume方法中調(diào)用 MobclickAgent.onResume(Context),
onPause方法中調(diào)用 MobclickAgent.onPause(Context)
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
- 確保在所有的Activity中都調(diào)用 MobclickAgent.onResume() 和onPause()方法翁巍,這兩個調(diào)用將不會阻塞應(yīng)用程序的主線程驴一,也不會影響應(yīng)用程序的性能。
- 注意如果您的Activity之間有繼承或者控制關(guān)系請不要同時在父和子Activity中重復(fù)添加nPause和nResume方法灶壶,否則會造成重復(fù)統(tǒng)計肝断,導(dǎo)致啟動次數(shù)異常增高。(eg.使用TabHost、TabActivity胸懈、ActivityGroup時)担扑。
- 當(dāng)應(yīng)用在后臺運行超過30秒(默認)再回到前端,將被認為是兩個獨立的session(啟動)趣钱,例如用戶回到home涌献,或進入其他程序,經(jīng)過一段時間后再返回之前的應(yīng)用首有。
- 可通過接口:setSessionContinueMillis(long interval) 來自定義這個間隔(參數(shù)單位為毫秒)洁奈。
- 如果開發(fā)者調(diào)用kill或者exit之類的方法殺死進程,請務(wù)必在此之前調(diào)用onKillProcess(Context context)方法绞灼,用來保存統(tǒng)計數(shù)據(jù)利术。
頁面統(tǒng)計
只由Activity構(gòu)成的應(yīng)用
如果您已經(jīng)完成之前的代碼添加(session統(tǒng)計),那么SDK已默認統(tǒng)計了每個Activity的跳轉(zhuǎn)路徑低矮。頁面統(tǒng)計不需要再添加其他代碼印叁。
包含Activity、Fragment或View的應(yīng)用
手動頁面統(tǒng)計API:一次成對的 onPageStart -> onPageEnd 調(diào)用军掂,對應(yīng)一次手動頁面生命周期統(tǒng)計轮蜕。
public static void onPageStart(String viewName);
public static void onPageEnd(String viewName);
MobclickAgent.onResume() 和MobclickAgent.onPause() 方法是用來統(tǒng)計應(yīng)用時長的(也就是Session時長,當(dāng)然還包括一些其他功能)
MobclickAgent.onPageStart()和MobclickAgent.onPageEnd()方法是用來統(tǒng)計頁面跳轉(zhuǎn)的
自定義事件統(tǒng)計(數(shù)據(jù)埋點)
- event id:自定義事件id。
- key:自定義事件下的參數(shù)蝗锥。
- value:自定義事件參數(shù)下的參數(shù)值跃洛。
計數(shù)事件
在您希望跟蹤的代碼部分,調(diào)用如下方法:
public static void onEvent(Context context, String eventID);
public static void onEvent(Context context, String eventID, String label);
- context 當(dāng)前宿主進程的ApplicationContext上下文终议。
- eventId 為當(dāng)前統(tǒng)計的事件ID汇竭。
- label 事件的標簽屬性。
統(tǒng)計點擊行為各屬性被觸發(fā)的次數(shù)
考慮事件在不同屬性上的取值穴张,可以調(diào)用如下方法:
public static void onEvent(Context context, String eventID, Map<String, String> map);
- context 當(dāng)前宿主進程的ApplicationContext上下文细燎。
- eventID 為當(dāng)前統(tǒng)計的事件ID。
- map 為當(dāng)前事件的屬性和取值(Key-Value鍵值對)皂甘。
比如:統(tǒng)計電商應(yīng)用中”購買”事件發(fā)生的次數(shù)玻驻,以及購買的商品類型及數(shù)量,那么在購買的函數(shù)里調(diào)用:
HashMap<String,String> map = new HashMap<String,String>();
map.put("type","book");
map.put("quantity","3");
MobclickAgent.onEvent(mContext, "purchase", map);
事件統(tǒng)計封裝工具類
public class EventStatisticsUtil {
/**
* 統(tǒng)計觸發(fā)事件的ID和參數(shù)
* @param mContext
* @param eventId
* @param params
*/
public static void onEvent(Context mContext, String eventId, Map<String, String> params) {
MobclickAgent.onEvent(mContext, eventId, params);
}
/**
* 只統(tǒng)計事件觸發(fā)ID
* @param mContext
* @param eventId
*/
public static void onEvent(Context mContext, String eventId) {
MobclickAgent.onEvent(mContext, eventId);
}
}