APP統計就是統計用戶使用app的各項指標,比如說日活躍量,頁面打開次數,新增用戶數量,用戶年齡分布,用戶地區分布,用戶性別分布以及用戶使用時間段等等。將統計出來的用戶信息進行比對分析,可以服務公司的營銷策略和投資策略。
目前做應用統計的公司很多,比較好的有友盟統計,它的主要功能有這些:
統計新增用戶和啟動次數
統計頁面停留時間
統計崩潰日志
統計行為和事件
統計終端信息,比如用戶區域,手機品牌,網絡狀態等。
友盟統計SDK開發環境的准備:
首先,獲取appKey,在管理后台主頁創建應用,填寫信息,系統會自動生成appKey
其次,對於AndroidStudio環境,則添加gradle依賴:
dependencies { compile 'com.umeng.analytics:analytics:latest.integration' }
然后,在manifest文件中配置appKey,以及添加相關權限
<manifest……> <uses-sdk android:minSdkVersion="8"></uses-sdk> <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="58b7fe1aae1bf82ad4001a1d" android:name="UMENG_APPKEY"/> <meta-data android:value="heima_store" android:name="UMENG_CHANNEL"/> </application> </manifest>
環境搭建完畢之后,現在開始幾個常用統計的使用
1、使用MobclickAgent統計App的新增用戶,並且啟用debug模式,便於觀察日志。由於MobclickAgent統計新增用戶的原理是依據於安裝app設備的設備id,所以我們嘗試修改設備id,重新安裝,然后查看結果。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //開啟debug模式,會打印emeng的操作日志 MobclickAgent.setDebugMode(true); } @Override protected void onResume() { super.onResume(); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onStop(); MobclickAgent.onPause(this); }
2、使用MobclickAgent統計app啟動次數,分析友盟統計啟動次數的原理,嘗試修改后並進行驗證,然后,自定義MobclickAgemnt記錄app啟動的時間周期,然后進行驗證。
//自定義啟動會話時間周期 MobclickAgent.setSessionContinueMillis(2000);
3、統計頁面停留時間,有兩種情況:統計Activity停留的事件和Fragment停留的時間
@Override protected void onResume() { super.onResume(); //記錄頁面啟動時間點 MobclickAgent.onPageStart(getClass().getSimpleName()); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onStop(); //記錄頁面退出時間點 MobclickAgent.onPageEnd(getClass().getSimpleName()); MobclickAgent.onPause(this); }
注意:如果需要對多個Activity統計停留時間,那么應該將上面的代碼寫到基類中。
!!!!!!!!!!!
注意:如果想統計Fragment的停留時間,這個由於友盟自身的原因,我么需要首先禁止Activity的追蹤統計功能,代碼乳腺下:
//設置禁用只統計Activity的停留時長 MobclickAgent.openActivityDurationTrack(false);
並且需要去掉BaseActivity中統計Activity的代碼:
@Override protected void onResume() { super.onResume(); // MobclickAgent.onPageStart(getClass().getSimpleName()); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); // MobclickAgent.onPageEnd(getClass().getSimpleName()); MobclickAgent.onPause(this); }
然后在Fragment界面中,添加相同的統計代碼,同樣的如果多個和Fragment需要統計功能,那么應該將下面的代碼添加到BaseFragment中。
public class MyFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView textView = new TextView(getContext()); textView.setText("我是Fragment"); textView.setTextSize(25); textView.setTextColor(Color.GREEN); return textView; } @Override public void onResume() { super.onResume(); MobclickAgent.onPageStart(getClass().getSimpleName()); } @Override public void onPause() { super.onPause(); MobclickAgent.onPageEnd(getClass().getSimpleName()); } }
4、統計崩潰錯誤日志
友盟會自動統計app中的崩潰日志,這個功能可以讓我們及時發現錯誤和定位錯誤,及時修復bug,提示app的穩定性和用戶體驗。如果想關閉統計崩潰日志功能,可以這樣做:
MobclickAgent.setCatchUncaughtExceptions(false);
另外,我們也將自己捕獲的錯誤上傳到Umeng進行統計分析:
public static void reportError(Context context, String error) //或 public static void reportError(Context context, Throwable e)
5、統計行為和事件 !!!!!
在app使用行為中,有些細節的行為和事件可能需要統計,比如當發紅包按鈕被點擊了,我們就認為這是一個發紅包事件;比如當發語音按鈕被點擊了,我們就認為這是一個發語音的事件;再比如用戶更換了頭像,我們則認為這是一個換頭像的行為事件。通過這些用戶的使用行為分析,可以讓我們更懂用戶,更好地為用戶服務。比如統計數據顯示,用戶發語音的行為非常多,那么在下一個版本中,我們可以將發語音的功能做的更易用更炫酷。
由於這些事件和行為是和我們app的業務邏輯相關聯的,所以沒有通用的事件行為。在我們自己的app中,我們需要自己定義需要統計的事件和行為。
Umeng提供了2種類型的事件統計:
- 計數事件,我們只關心該事件行為的數量,比如統計一首歌被播放了多少次;
- 計算事件,我們關心該事件行為的持續時間,比如統計一個人聽某首歌聽了多久;
比如,我們想統計一個發紅包的按鈕被點擊的事件行為,並且,這是一個計數事件,我們需要在后台添加這個id為fahongbao的計數事件,就可以查看統計的數據了。代碼如下:
//當按鈕點擊的時候,說明用戶想發紅包,那么則記錄此行為 MobclickAgent.onEvent(getContext(),"fahongbao");
比如,我們想統計林俊傑的<<江南>>被用戶聽了多久,那么這就是一個計算事件。代碼如下:
//我們計算好的播放時間 int duration = 500000; String eventId = "hotsong";//熱歌榜 //事件描述信息,比如歌手是誰,歌曲名稱 Map<String,String> eventDesc = new HashMap<String, String>(); eventDesc.put("singer","JJLin"); eventDesc.put("song","江南"); MobclickAgent.onEventValue(getContext(),eventId,eventDesc,duration);