Umeng App三方統計(埋點必備)
阿新 • • 發佈:2019-02-16
僅代表當前個人統計整合,且成功後的筆記歸納,具體整合方式與解決方法,請根據Umeng文件逐步校驗 !
Umeng官方渠道 :
//Umeng Android Sdk
地址 :http://mobile.umeng.com/custom_sdk
//Umeng Android Sdk 7.4.1整合過程 外部配置
地址 :http://dev.umeng.com/sdk_integate/android_sdk/android_common_guide
//Umeng Android Sdk 7.4.1整合過程 APP統計內部配置
地址 :http://dev.umeng.com/sdk_integate/android_sdk/analytics_doc
先行配置
1.build (加入依賴):
//友盟統計
compile 'com.umeng.sdk:common:1.4.1'
compile 'com.umeng.sdk:analytics:7.4.1'
2.Android Manifest (加入配置) :
- 加入許可權
<!-- 必須的許可權 -->
<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" />
<!-- 推薦的許可權 -->
<!-- 新增如下許可權,以便使用更多的第三方SDK和更精準的統計資料 -->
<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" />
- 清單檔案下的application內部新增配置引數
//這裡可以在清單檔案配置,也可以動態的在我們自己的application程式碼中進行初始化
<meta-data android:value="YOUR_APP_KEY" android:name="自己Umeng平臺的appkey"/>
//這個官方說是相容老版本,同時渠道統計會用到這個,不要修改內部值
<meta-data android:name="UMENG_CHANNEL" android:value="Channel ID"/>
3.Application(OnCreate 生命週期內加入Umeng初始化方法):
/**這裡要注意:如果在清單檔案已經配置了初始化資訊,
*這裡可以少去初始化的程式碼,如果倆邊都配置了
*那麼會優先程式碼中的配置!!!所以這裡大家務必注意!*/
//初始化
UMConfigure.init(garageApp,"自己Umeng平臺的appkey","Umeng",UMConfigure.DEVICE_TYPE_PHONE,"");
//開啟Log
UMConfigure.setLogEnabled(true);
//開啟除錯模式
MobclickAgent.setDebugMode( true );
//設定型別
MobclickAgent.setScenarioType(garageApp, MobclickAgent.EScenarioType.E_UM_NORMAL);
//禁止預設的頁面統計方式
//MobclickAgent.openActivityDurationTrack(true);
統計場景型別 :
EScenarioType.E_UM_NORMAL 普通統計場景型別
EScenarioType.E_UM_GAME 遊戲場景型別
單個事件進行埋點統計:
- 事件埋點 (對應的點選事件下進行設定)
//newOrder為自定義事件
MobclickAgent.onEvent(MainActivity.this,"newOrder");
- 自定義事件新增流程
Step 1:
Step 2:
Step 3:
- 對應的Activity內新增 (統計時常,目前沒有使用)
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
MobclickAgent.onPageStart("newOrderBtn");
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
MobclickAgent.onPageEnd("newOrderBtn");
}
整合測試 (使用環境 - 自我測試,繫結自己手機檢視埋點效果) :
- 裝置識別資訊獲取的方法(通過點選事件直接呼叫即可,之後使用返回資料進行設定)
/**
* 測試
* */
public static String getDeviceInfo(Context context) {
try {
org.json.JSONObject json = new org.json.JSONObject();
android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String device_id = null;
if (checkPermission(context, Manifest.permission.READ_PHONE_STATE)) {
device_id = tm.getDeviceId();
}
String mac = null;
FileReader fstream = null;
try {
fstream = new FileReader("/sys/class/net/wlan0/address");
} catch (FileNotFoundException e) {
fstream = new FileReader("/sys/class/net/eth0/address");
}
BufferedReader in = null;
if (fstream != null) {
try {
in = new BufferedReader(fstream, 1024);
mac = in.readLine();
} catch (IOException e) {
} finally {
if (fstream != null) {
try {
fstream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
json.put("mac", mac);
if (TextUtils.isEmpty(device_id)) {
device_id = mac;
}
if (TextUtils.isEmpty(device_id)) {
device_id = android.provider.Settings.Secure.getString(context.getContentResolver(),
android.provider.Settings.Secure.ANDROID_ID);
}
json.put("device_id", device_id);
return json.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
錯誤收集(預設已經配置,而且已經開啟):
同在Application下配置
//錯誤統計 預設開啟 ,false為關閉
MobclickAgent.setCatchUncaughtExceptions(true);
- AndroidMainfest(清單檔案)中的application內新增:
//這裡是方便Umeng的渠道統計,進行配置 UMENG_CHANNEL 不可改變不然無法識別
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
- build(app)中,android內新增渠道名,這裡要注意的是 如果是數字開頭是不行的!需要新增下劃線!這是倆種方式,可以使用uc的方式新增渠道,也可以使用現在的不直接宣告的模式。個人介意第一種樣式!
第一種方式:
productFlavors{
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
_360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]
}
baidu{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
}
第二種方式:
productFlavors{
default_channel{}
wandoujia{}
yingyongbao{}
xiaomi{}
huawei{}
jifeng{}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
}
關於渠道統計,同可借鑑以下倆篇文章: