Android應用發佈後的統計——百度移動統計的應用

一個App發佈到各個渠道以後,咱們須要採集不一樣渠道的一些信息,好比app在運行過程當中產生的一些異常信息,app在各個android版本的分佈,以及各個app版本的分佈,各渠道的用戶數,用戶忠誠度等等信息。這一切,咱們可使用百度移動統計來實現。java

首先,你必須有百度開發者的帳號,以後到http://developer.baidu.com/console#app/project建立一個工程,如圖咱們建立了一個test工程 
這裏寫圖片描述android

以後點擊test工程,記錄api key 
這裏寫圖片描述api

而後點擊左邊菜單的端服務Frontia,設置移動統計的功能session

這裏寫圖片描述

添加移動統計後悔出現以下界面 
這裏寫圖片描述app

複製ReportID做爲後續調用該功能使用的一個值。點擊查看統計,便可查看一些統計信息,固然此時裏面什麼信息都沒有,咱們添加了統計功能後這裏便會有信息框架

這裏寫圖片描述

而後去下載sdk,http://developer.baidu.com/frontia/sdk,選擇移動統計-Android點擊下載sdk,將下載的文件裏的FrontiaDemo/libs下的Baidu-Frontia-Android-2.0.7.jar拷到項目libs目錄下,不要拷貝libs/Baidu-Frontia-Android-2.0.8.jar,測試過,該jar有問題,運行的時候會找不到一個類,因此咱們拷demo文件裏的jarasync

添加程序運行的權限ide

 
<!-- Frontia框架的公共權限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <!-- FrontiaPush 和FrontiaStatistics 須要的權限 --> <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

實現一個Application的子類完成初始化函數

 
public class App extends Application { @Override public void onCreate() { super.onCreate(); FrontiaApplication.initFrontiaApplication(getApplicationContext()); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在manifest文件裏指定咱們的application,包名改爲本身項目的包名測試

android:name=".app.App"
  • 1

編寫一個配置類,將配置用到的一些值聲明在裏面

public class Config { public final static String APIKEY = "7jmaDS9xP0C56d44g0LLXCap"; public static final String REPORT_ID = "70f9ea11c5"; public static final String EVENT_ID = "1";//事件 } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

編寫一個基類activity,爲了完成全部activity的一些UI統計功能,複用代碼。

package cn.edu.zafu.channeldemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import com.baidu.frontia.Frontia; import com.baidu.frontia.api.FrontiaStatistics; import cn.edu.zafu.channeldemo.config.Config; /** * User:lizhangqu(513163535@qq.com) * Date:2015-07-04 * Time: 20:40 */ public class BaseActivity extends AppCompatActivity { private FrontiaStatistics mFrontiaStatistics; private static final String TAG = "BaseActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); boolean isInit=Frontia.init(this.getApplicationContext(), Config.APIKEY); Log.d(TAG, "是否初始化成功:"+isInit); mFrontiaStatistics = Frontia.getStatistics(); } public void onResume() { Log.w(TAG, "BaseActivity.OnResume()"); super.onResume(); /** * 頁面起始(每一個Activity中都須要添加,若是有繼承的父Activity中已經添加了該調用,那麼子Activity中務必不能添加) * 不能與StatService.onPageStart一級onPageEnd函數交叉使用 */ mFrontiaStatistics.pageviewStart(this, this.getClass().getName()); } public void onPause() { super.onPause(); Log.w(TAG, "BaseActivity.onPause()"); /** * 頁面結束(每一個Activity中都須要添加,若是有繼承的父Activity中已經添加了該調用,那麼子Activity中務必不能添加) * 不能與StatService.onPageStart一級onPageEnd函數交叉使用 */ mFrontiaStatistics.pageviewEnd(this, this.getClass().getName()); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

編寫Activity繼承這個基類Activity,並使用一些統計功能,好比異常統計,自定義事件的統計,以及日誌發送策略的設置等等,詳細見註釋。

package cn.edu.zafu.channeldemo; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import com.baidu.frontia.Frontia; import com.baidu.frontia.api.FrontiaStatistics; import cn.edu.zafu.channeldemo.config.Config; import cn.edu.zafu.channeldemo.util.AppUtil; public class MainActivity extends BaseActivity { private FrontiaStatistics mFrontiaStatistics; private Button btnException; private Button btnEvent; private Button btnEventDuration; private Button btnEventStart; private Button btnEventEnd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mFrontiaStatistics = Frontia.getStatistics(); String channel=AppUtil.getMetaValue(this,"CHANNEL_NAME"); Log.d("TAG",channel); mFrontiaStatistics.setAppDistributionChannel(channel, true);//設置應用發佈渠道 mFrontiaStatistics.setSessionTimeout(50);//測試時,可使用1秒鐘session過時,這樣不斷的啓動退出會產生大量日誌。 mFrontiaStatistics.enableExceptionLog();//開啓異常日誌 mFrontiaStatistics.setReportId(Config.REPORT_ID);//reportId必須在mtj網站上註冊生成,該設置也能夠在AndroidManifest.xml中填寫 //第一個參數爲日誌發送策略 //第二個參數爲日誌發送策略設備週期性發送 //第三個參數爲日誌發送間隔 //第四個參數爲是否只在wifi狀況下發送日誌 btnException = (Button) findViewById(R.id.btn_excep); btnEvent = (Button) findViewById(R.id.btn_event); btnEventDuration = (Button) findViewById(R.id.btn_event_duration); btnEventStart = (Button) findViewById(R.id.btn_event_start); btnEventEnd = (Button) findViewById(R.id.btn_event_end); btnException.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //此處10/0,會發生異常,用來驗證上傳異常日誌 Log.d("TAG", 10 / 0 + ""); } }); btnEvent.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { FrontiaStatistics.Event event = new FrontiaStatistics.Event(Config.EVENT_ID, "事件1"); mFrontiaStatistics.logEvent(event); } }); /** * 自定義事件的第一種方法,寫入某個事件的持續時長 */ btnEventDuration.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { FrontiaStatistics.Event event = new FrontiaStatistics.Event(Config.EVENT_ID, "事件1"); event.setDuration(100); // 事件時長100毫秒 mFrontiaStatistics.logEventDuration(event); } }); //自定義事件的第二種方法:事件的時長由Frontia統計,而不是開發者統計。 final FrontiaStatistics.Event asyncEvent = new FrontiaStatistics.Event(Config.EVENT_ID, "事件1"); btnEventStart.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mFrontiaStatistics.eventStart(asyncEvent); } }); //自定義事件的第二種方法,本身定義該事件的起始時間和結束時間 btnEventEnd.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mFrontiaStatistics.eventEnd(asyncEvent); } }); } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94

到統計後臺添加咱們的自定義事件的id和名稱 
這裏寫圖片描述

添加完成後就是這樣子的

這裏寫圖片描述

完成以後就能夠生成渠道包並進行相應的統計功能了。生成渠道包見上一篇博文Android應用發佈的準備——生成渠道包以及渠道的申請Android應用發佈的準備——渠道註冊與認證

完成以後就可使用android studio生成渠道包,將對應包發佈到指定渠道,後續用戶安裝後,就能夠進行一些統計工做,好比程序異常日誌,自定義事件觸發次數,持續時間,各版本分佈狀況等等信息。如圖 
這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

更多統計信息請至後臺查看。

相關的源碼下載 
http://download.csdn.net/detail/sbsujjbcy/8869821

相關文章
相關標籤/搜索