1. 程式人生 > >Umeng App三方統計(埋點必備)

Umeng App三方統計(埋點必備)

僅代表當前個人統計整合,且成功後的筆記歸納,具體整合方式與解決方法,請根據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:
1>

Step 2:
2>

Step 3:
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 ]
    }

關於渠道統計,同可借鑑以下倆篇文章: