Android友盟統計的整合與使用(包含多渠道打包配置)
前言
app上線後,一般公司都希望跟蹤app在市場上的使用情況。包括新增使用者、活躍使用者、渠道資訊、錯誤資訊等,還有例如商城類的app,需要跟蹤使用者最喜歡瀏覽哪種型別的店鋪或商品。這些都可以通過整合友盟統計來輕鬆實現。
(小提示:由於截的都是大圖,在簡書顯示比較模糊,需要檢視清晰圖片則滑鼠點選圖片放大即可)
整合
一、獲取Appkey
整合友盟SDK之前,首先需要到友盟官網註冊並且新增新應用,獲取Appkey(一般公司專案不需要自己申請賬號,跟專案經理要即可)。每個應用對應的Appkey是唯一的,如下:
二、匯入SDK
有兩種方法:(本Demo中採用第二種方法)
方法一:下載SDK,將解壓出來的jar包複製到工程libs/目錄下。
下載地址:
只需要下載Analytics SDK即可,如下:方法二:新增SDK在maven中心庫的線上依賴
1、在app的builde.gradle中新增依賴
/*友盟統計需要的最新版本元件化基礎庫和統計SDK*/
compile 'com.umeng.sdk:common:latest.integration'
compile 'com.umeng.sdk:analytics:latest.integration'
如果無法正常整合,則需要在專案的builde.gradle中新增如下配置:
allprojects { repositories { mavenCentral() } }
三、在AndroidManifest.xml中新增許可權、配置Appkey與渠道(Channel)
1、新增許可權
<!--友盟統計所需許可權-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name ="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
2、配置Appkey
<!--value的值填寫你在友盟後臺申請的應用Appkey-->
<meta-data android:value="5a910933f29d986f35000064" android:name="UMENG_APPKEY"/>
3、配置渠道
由於一般會有多個渠道,所以這裡的渠道名稱不能寫死,應該設定成動態的,如下:
<!--value的值填寫渠道名稱,例如yingyongbao。這裡設定動態渠道名稱變數-->
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
在app的builde.gradle中配置需要的渠道(這裡只測試應用寶、豌豆莢、小米),對應上面的渠道名稱變數。
/*配置渠道*/
productFlavors {
yingyongbao {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
- 完整AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.wildma.umenganalytics"
xmlns:android="http://schemas.android.com/apk/res/android">
<!--友盟統計所需許可權-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!--友盟統計配置Appkey與Channel-->
<!--value的值填寫你在友盟後臺申請的應用Appkey-->
<meta-data android:value="5a910933f29d986f35000064" android:name="UMENG_APPKEY"/>
<!--value的值填寫渠道名稱,例如yingyongbao。這裡設定動態渠道變數-->
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
</application>
</manifest>
- 完整app的builde.gradle如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.wildma.umenganalytics"
minSdkVersion 14
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//簽名信息配置
signingConfigs {
release {
storeFile file("./keystore/UMengAnalyticsKeystore.jks")
keyAlias "UMengAnalyticsKeystore"
storePassword "123456"
keyPassword "123456"
}
debug {
storeFile file("./keystore/debug.keystore")
}
}
/*配置渠道*/
productFlavors {
yingyongbao {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
testCompile 'junit:junit:4.12'
/*友盟統計需要的最新版本元件化基礎庫和統計SDK*/
compile 'com.umeng.sdk:common:latest.integration'
compile 'com.umeng.sdk:analytics:latest.integration'
}
四、新增初始化方法
在專案工程的自定義application中的onCreate方法中新增以下方法:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
/**
* 初始化common庫
* 引數1:上下文,必須的引數,不能為空
* 引數2:友盟 app key,非必須引數,如果Manifest檔案中已配置app key,該引數可以傳空,則使用Manifest中配置的app key,否則該引數必須傳入
* 引數3:友盟 channel,非必須引數,如果Manifest檔案中已配置channel,該引數可以傳空,則使用Manifest中配置的channel,否則該引數必須傳入,channel命名請詳見channel渠道命名規範
* 引數4:裝置型別,必須引數,傳引數為UMConfigure.DEVICE_TYPE_PHONE則表示手機;傳引數為UMConfigure.DEVICE_TYPE_BOX則表示盒子;預設為手機
* 引數5:Push推送業務的secret,需要整合Push功能時必須傳入Push的secret,否則傳空
*/
//如果AndroidManifest.xml清單配置中沒有設定appkey和channel,則可以在這裡設定
// UMConfigure.init(this, "58edcfeb310c93091c000be2", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "1fe6a20054bcef865eeb0991ee84525b");
UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE,"");
}
}
通過上面的步驟,友盟統計就已經整合好了,下面來看看它各種統計的使用。
使用
Session統計
即啟動資料的統計(包括新增使用者、活躍使用者、啟動次數、使用時長等基本資料)
需要在每個Activity的onResume方法中呼叫 MobclickAgent.onResume(Context),
onPause方法中呼叫 MobclickAgent.onPause(Context),如下:
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
確保在所有的Activity中都呼叫 MobclickAgent.onResume() 和onPause()方法。
如果Activity之間有繼承或者控制關係請不要同時在父和子Activity中重複新增nPause和nResume方法,否則會造成重複統計。例如在BaseActivity中新增過,則它的子類就不需要添加了。
當應用在後臺執行超過30秒(預設)再回到前端,將被認為是兩個獨立的session(啟動),例如使用者回到home,或進入其他程式,經過一段時間後再返回之前的應用。可通過介面:setSessionContinueMillis(long interval) 來自定義這個間隔(引數單位為毫秒)。
如果開發者呼叫kill或者exit之類的方法殺死程序,請務必在此之前呼叫onKillProcess(Context context)方法,用來儲存統計資料。
安裝app啟動後。在友盟後臺就可以看到統計的資料了。如下:
新增使用者、啟動次數、日活等資料:
渠道分析資料:
自定義事件統計
自定義事件可以實現在應用程式中埋點來統計使用者的點選行為。例如我們的應用是商城類的,就需要統計使用者是喜歡進入“nike”店鋪,還是“new banlance"店鋪。自定義事件目前包括"計數事件"和"計算事件",這裡主要講下計數事件。
1、首先需要在友盟後臺新增自定義事件:設定-事件-手工新增-新增事件。如下:
2、在需要監聽自定義事件的地方新增程式碼,如下模擬點選進入”nike“店鋪。
第二個引數為當前統計的事件ID,需要與友盟後臺設定的事件ID一致(即上圖的事件ID)。
MobclickAgent.onEvent(this, "nike");//引數二為當前統計的事件ID
3、執行app,觸發該事件後。在友盟後臺就可以看到統計的資料了。如下:
其中訊息數量即為事件被觸發的次數。
錯誤統計
錯誤分析是友盟為移動開發者提供的Crash收集和分析工具,幫助開發者監測App在移動裝置上的執行狀況,及時發現並解決錯誤,提升App的穩定性。
Android統計SDK從V4.6版本開始內建錯誤統計,不需要開發者再手動整合。
SDK通過Thread.UncaughtExceptionHandler 捕獲程式崩潰日誌,並在程式下次啟動時傳送到伺服器。 如不需要錯誤統計功能,可通過此方法關閉
MobclickAgent.setCatchUncaughtExceptions(false);
如果開發者自己捕獲了錯誤,需要上傳到【友盟+】伺服器可以呼叫下面方法:
public static void reportError(Context context, String error)
//或
public static void reportError(Context context, Throwable e)
現在我在demo中模擬一次錯誤,如下:
/**
* 模擬錯誤
* @param view
*/
public void createError(View view) {
int i = 1 / 0;
}
再到友盟後臺檢視錯誤,如下:
其他統計
上面三個統計是比較常用的統計,還有很多統計,例如賬號統計、頁面統計等就不一一列舉了。有需求的可以參考友盟統計整合文件