天天看點

Android友盟統計

統計 可以很友善的給我們的程式 帶來很多的參考;可以直覺的了解我們的産品在市場的使用情況:下面簡單談談 友盟在項目中的使用:簡單、快速。号稱三分鐘快速內建完成基本功能。

友盟統計:

http://www.umeng.com/

友盟官方內建文檔::

http://dev.umeng.com/analytics/android-doc/integration/

簡單內建步驟:(環境:AndoridStuido)

#統計基礎

##1:申請Key

考慮申請Key的操作簡單,這裡我就不多說了。

##2:下載下傳SDK,配置項目依賴庫

配置 bulid.gradle

A:直接配置:不需要添加到lib包中:

在Gradle依賴中添加:

dependencies {
   compile 'com.umeng.analytics:analytics:latest.integration'
}
           

如果無法正常內建請添加如下代碼 :

allprojects {
    repositories {
            mavenCentral()     
    }
}

           

B:在lib中配置:

在下載下傳的sdk中找到(目前我下載下傳的是):umeng-analytics-v6.0.9.jar copy到lib下;

然後選中架包:右鍵–>Add As Library… 即可。

##3:配置Key: Manifest.xml檔案中配置:

添權重限 +配置Key

<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.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application ……>
……
<activity ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>    
</manifest>
           

注意:友盟的配置在application标簽中

YOUR_APP_KEY:對應的步驟1中個人申請的:AppKey (唯一的:每一個應用對應一個AppKey)

Channel ID:對應的友盟的管道;例如:UMENG_CHANNEL 或者wandoujia或者360shouji 等;

說明(可以不用關注):

A:一個App目前隻支援一個AppKey:也就是一個應用隻能使用一個友盟統計。

B:這個是在Manifest.xml中配置友盟的AppKey;

C:這個“READ_PHONE_STATE”權限需要在程式中判斷是否開啟;沒有開啟需要提示開啟。

READ_PHONE_STATE:是友盟用來擷取使用者裝置的IMEI,通過IMEI和mac來唯一的辨別使用者,這個實作我們不用管;如果個人想擷取手機的唯一辨別請移步:http://blog.csdn.net/u013472738/article/details/72851227 最後一個内容檢視。

##4:項目代碼配置:

在每個Activity中的方法onResume() 和onPause()方法中 添加:

//TJ:添加友盟
    @Override
    protected void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
    }
           

注意A: 如果您的Activity之間有繼承或者控制關系請不要同時在父和子Activity中重複添加onPause和onResume方法,否則會造成重複統計,導緻啟動次數異常增高。

如:activityA extends activityMain(){…}

那麼隻需要在:activityMain的Activity 中添加 統計 即可;activityA的Activity可以不用添加。

注意B:

如果開發者調用Process.kill或者System.exit之類的方法殺死程序,請務必在此之前調用MobclickAgent.onKillProcess(Context context)方法,用來儲存統計資料。

注意C:

有唯一性:單個手機ID唯一:同一個手機多次安裝/使用;僅記錄了一次安裝/使用。

------------完成以上四步基本操作 即可實作基本的新增、活躍、啟動、留存等資料統計。------------

#基礎擴充:

##5:配置Key: 代碼中配置AppKey:

需要在程式入口(如:Application全局類)中配置可以使用:

MobclickAgent. startWithConfigure(UMAnalyticsConfig config) ;
           

方法說明:

UMAnalyticsConfig(Context context, String appkey, String channelId)

UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType)

UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType,Boolean isCrashEnable)
           

構造意義:

String appkey:官方申請的Appkey

String channel: 管道号

EScenarioType eType: 場景模式,包含統計、遊戲、統計盒子、遊戲盒子

Boolean isCrashEnable: 可選初始化. 是否開啟crash模式

例如:

在Application全局類的OnCreate()方法中添加:

MobclickAgent. startWithConfigure(new MobclickAgent.UMAnalyticsConfig(this,"Appkey","Wandoujia") );
           

##6:計數事件

在友盟的App應用中的“概況”中有很多供我們使用的輔助的統計功能:

下面簡單舉例:自定義事件(計數、計算事件):計數

圖1:添加事件說明:

Android友盟統計

圖2:添加成功:

Android友盟統計

項目中點選事件計數友盟統計添加代碼:

A:簡單的一個ID對應一個事件:

MobclickAgent.onEvent(mContext, “TestID”);// 事件ID
           

B:一個ID對應多個事件:

Map<String, String> map_ekv0 = new HashMap<String, String>();
                map_ekv0.put(“key1” , “value1”);//TJ:這裡鍵和值1。
				map_ekv0.put(“key2” , “value2”);//TJ:這裡鍵和值2。
                MobclickAgent.onEvent(mContext, “TestID”, map_ekv0);//TJ:注意:Key/Value
           

這樣在友盟一個ID:TestID 就對應兩個鍵值對了;代碼生效後:在事件:詳情–>檢視。

詳細參考:友盟SDK中的類:AnalyticsHome.java

貼出簡單代碼:

public class AnalyticsHome extends Activity {
    private Context mContext;
    private final String mPageName = "AnalyticsHome";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.umeng_example_analytics);

        mContext = this;
        MobclickAgent.setDebugMode(true);
        // SDK在統計Fragment時,需要關閉Activity自帶的頁面統計,
        // 然後在每個頁面中重新內建頁面統計的代碼(包括調用了 onResume 和 onPause 的Activity)。
        MobclickAgent.openActivityDurationTrack(false);
        // MobclickAgent.setAutoLocation(true);
        // MobclickAgent.setSessionContinueMillis(1000);
        // MobclickAgent.startWithConfigure(
        // new UMAnalyticsConfig(mContext, "4f83c5d852701564c0000011", "Umeng",
        // EScenarioType.E_UM_NORMAL));
        MobclickAgent.setScenarioType(mContext, EScenarioType.E_UM_NORMAL);
    }

    @Override
    public void onResume() {
        super.onResume();
        MobclickAgent.onPageStart(mPageName);
        MobclickAgent.onResume(mContext);
    }

    @Override
    public void onPause() {
        super.onPause();
        MobclickAgent.onPageEnd(mPageName);
        MobclickAgent.onPause(mContext);
    }

    /**
     * android:onClick="onButtonClick"
     *
     * @param view
     */
    public void onButtonClick(View view) {
        int id = view.getId();
        switch (id) {
        case R.id.umeng_example_analytics_event_cc:
            List<String> keyPath = new ArrayList<String>();
            keyPath.add("one");
            keyPath.add("two");
            keyPath.add("tree");
            MobclickAgent.onEvent(mContext, keyPath, 20, "label");
            break;
        case R.id.umeng_example_analytics_event:
            MobclickAgent.onEvent(mContext, "click");
            MobclickAgent.onEvent(mContext, "click", "button");
            break;
        case R.id.umeng_example_analytics_ekv:
            Map<String, String> map_ekv = new HashMap<String, String>();
            map_ekv.put("type", "popular");
            map_ekv.put("artist", "JJLin");

            MobclickAgent.onEvent(mContext, "music", map_ekv);
            break;
        case R.id.umeng_example_analytics_duration:

            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, 12000);
            break;
       
       
    }
 
}

           

說明

  1. 添加管道隻能在mainfest裡設定?

    當然不是,除了在mainfest通過來設定管道ID,你還可以在Activity中配置,隻需在程式啟動時的Activity中調用此接口:AnalyticsConfig.setChannel(String channel)就可以實作。

    小建議:可以使用20位以内的英文或數字為管道命名(不建議使用中文命名)

  2. 添加了新的管道,安裝包已經發出去了,這個管道卻沒有顯示

    這個問題真的不是我們的工具有問題,是你對友盟的規則還不了解啊。在添加了新的管道,友盟背景在收到了該管道包的啟動日志,經過解析之後,才會出現該管道的資訊。是以,如果你的新管道沒有顯示,那不是友盟産品的問題,因為還沒有人安裝這個管道包并啟動呢。怎麼解決呢?你可以使用一台新的裝置去安裝這個新的管道包,啟動之後,友盟背景就會出現這個管道啦。

    注意:一定要用新的裝置,因為每台裝置僅記錄首次安裝激活的管道,如果該裝置再次安裝其他管道包,則資料仍會被記錄在初始的安裝管道上。 是以在測試不同的管道時,請使用不同的裝置來分别測試。另外,內建測試的資料不會出現在正常資料裡,是以新裝置也不能是測試裝置。

OK後續會持續完善學習:歡迎指正…

A:flurry統計 : 個人認為國際上相對好用的統計,O(∩_∩)O哈哈~

B:友盟統計: 國内比較強大且好用的統計。

C:極光推送: 主要推送功能比較完善簡單。

D:個推: 一個統計。

E:51.la: 針對IP(web頁面)統計的一個統計:添加前需要頁面支援。

F:CNZZ : 很早和友盟合并了;導緻友盟叫:友盟+;不錯O(∩_∩)O哈哈~

等…