標籤:
使用友盟提供的功能之前需要擷取應用的AppKey
一:應用統計
開發文檔:http://dev.umeng.com/analytics/android-doc/integration
session統計
在每個Activity的onResume方法中調用 MobclickAgent.onResume(Context), onPause方法中調用MobclickAgent.onPause(Context)
- 確保在所有的Activity中都調用
MobclickAgent.onResume() 和MobclickAgent.onPause()方法
- 請不要同時在父和子Activity中重複添加onPause和onResume方法,否則會造成重複統計,導致啟動次數異常增高
- 當應用在後台運行超過30秒(預設)再回到前端,將被認為是兩個獨立的session(啟動),例如使用者回到home,或進入其他程式,經過一段時間後再返回之前的應用。可通過介面:
MobclickAgent.setSessionContinueMillis(long interval) 來自訂這個間隔(參數單位為毫秒)
- 調用Process.kill或者System.exit之類的方法殺死進程之前調用MobclickAgent.onKillProcess(Context context)方法,用來儲存統計資料。
-
@Override public void onResume() { super.onResume(); MobclickAgent.onResume(this); } @Override public void onPause() { super.onPause(); MobclickAgent.onPause(this); }
頁面統計
- 只有Activity的應用:只需添加session統計的代碼即可
- 包含Activity、Fragment、View的應用
- 使用
onResume 和 onPause 方法統計時間長度, 這和基本統計中的情況一樣(針對Activity)
public void onResume() { super.onResume(); MobclickAgent.onResume(this); //統計時間長度}public void onPause() { super.onPause(); MobclickAgent.onPause(this);}
- 使用
onPageStart 和 onPageEnd 方法統計頁面(針對頁面,頁面可能是Activity 也可能是Fragment或View)
public void onResume() { super.onResume(); MobclickAgent.onPageStart("MainScreen"); //統計頁面}public void onPause() { super.onPause(); MobclickAgent.onPageEnd("MainScreen"); }
行為的統計
- 計數事件,統計發生的次數
MobclickAgent.onEvent(Context context, String eventId);
- 計算事件,統計數值型變數的值得分布,如事件期間、每次付款金額等,可以調用如下方法:
MobclickAgent.onEventValue(Context context, String id, Map<String,String> m, int du)
//樣本:統計一次音樂播放,包括音樂類型,作者和播放時間長度,可以在音樂播放結束後這麼調用:
int duration = 12000; //開發人員需要自己計算音樂播放時間長度 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, duration);
線上參數
線上參數使您可以在網站上動態配置預設好的參數的參數值。例如: 動態修改應用的歡迎語,修改應用中開關選項的"on"或"off",以及類似遊戲中虛擬物品的價格等。
需要在程式的入口 Activity 中添加
MobclickAgent.updateOnlineConfig( mContext );
String value = MobclickAgent.getConfigParams( mContext, "xxxx" );
錯誤統計
在try-catch捕獲到異常後使用
public static void reportError(Context context, String error) //或 public static void reportError(Context context, Throwable e)
二:自動更新 優點
原理
友盟自動更新服務首先將使用者終端上的應用版本資訊(version code)與友盟伺服器上開發人員上傳的應用版本資訊進行比較。如果伺服器的應用版本更高,則會提示使用者有新的應用版本(提示如所示,開發人員可自訂介面)。使用者選擇更新之後,友盟自動更新則開始下載新版本應用,然後安裝此應用。
上傳App
- 右上方選中應用
- 點擊"組件"
- 點擊右側菜單“自動更新”
手動更新
UmengUpdateAgent.setUpdateAutoPopup(false);UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() { @Override public void onUpdateReturned(int updateStatus,UpdateResponse updateInfo) { switch (updateStatus) { case UpdateStatus.Yes: // has update UmengUpdateAgent.showUpdateDialog(mContext, updateInfo); break; case UpdateStatus.No: // has no update Toast.makeText(mContext, "沒有更新", Toast.LENGTH_SHORT).show(); break; case UpdateStatus.NoneWifi: // none wifi Toast.makeText(mContext, "沒有wifi串連, 只在wifi下更新", Toast.LENGTH_SHORT).show(); break; case UpdateStatus.Timeout: // time out Toast.makeText(mContext, "逾時", Toast.LENGTH_SHORT).show(); break; } }});UmengUpdateAgent.update(this); 自訂更新
修改自訂檔案:umeng_update_dialog.xml
三:使用者反饋
使用預設的反饋功能
//跳轉到友盟預設的反饋頁面
mFeedbackAgent.startFeedbackActivity();
//回複通知
mFeedbackAgent.sync();
自訂反饋:
- 自訂布局頁面
- 設定使用者資訊
UserInfo info = agent.getUserInfo();if (info == null) info = new UserInfo();Map<String, String> contact = info.getContact();if (contact == null)contact = new HashMap<String, String>();String contact_info = contactInfoEdit.getEditableText().toString();contact.put(KEY_UMENG_CONTACT_INFO_PLAIN_TEXT, contact_info);contact.put("email", "*******");//contact.put("qq", "*******");//contact.put("phone", "*******");//contact.put("plain", "*******");info.setContact(contact);// optional, setting user gender information.info.setAgeGroup(1);info.setGender("male");//info.setGender("female");agent.setUserInfo(info);new Thread(new Runnable() { @Override public void run() { boolean result = fb.updateUserInfo(); } }).start();
友盟各個外掛程式的使用方法