TalkingData Analytics為移動應用提供數據統計分析服務,能夠幫助移動應用開發者收集、處理、分析一方數據,可視化運營指標,監測用戶行為,幫助產品設計。適用範圍TalkingData App Analytics Android SDK適用於 Android 2.3.3(API Level 10)及以上的設備。集成準備-創建應用並獲取App IDApp ID是TalkingData分析平臺標識一款獨立應用/遊戲的唯一標識,集成SDK前需要在TalkingData報表中創建應用/遊戲並獲取相應的App ID。
步驟:
1)註冊並登錄https://www.talkingdata.com/ ,選擇App Analytics產品線
2)創建應用並獲取App ID
3)如果已創建的應用,請從“應用管理->基本信息”中查看App ID。快速集成-導入SDK請根據所用IDE
選擇導入方式:
1)Eclipse ADT 將 SDK 中的 jar 文件拷貝到工程的libs文件夾中。
2)Android Studio 2.1)在 Android Studio 項目的 app 文件夾中,新建 libs 文件夾。 2.2)將 SDK jar 文件拷貝到新建的 libs 文件夾中。 2.3)修改 app 文件夾中的 build.gradle 文件,添加 dependencies 依賴項
dependencies { … compile files('libs/TalkingdataAnalytics.jar') … }快速集成-代碼混淆如果開發者的應用添加了混淆,需要在配置文件中添加一下規則:
<code>-dontwarn com.tendcloud.tenddata.**-keep class com.tendcloud.** {*;}-keep public class com.tendcloud.tenddata.** { public protected *;}-keepclassmembers class com.tendcloud.tenddata.**{public void *(***);}-keep class com.talkingdata.sdk.TalkingDataSDK {public *;}-keep class com.apptalkingdata.** {*;}-keep class dice.** {*; }-dontwarn dice.**/<code>
快速集成-配置權限
權限
用途
INTERNET
允許程序聯網和發送統計數據的權限。
ACCESS_NETWORK_STATE
允許應用檢測網絡連接狀態,在網絡異常狀態下避免數據發送,節省流量和電量。
READ_PHONE_STATE
允許應用以只讀的方式訪問手機設備的信息,通過獲取的信息來唯一標識用戶。
ACCESS_WIFI_STATE
獲取設備的MAC地址,同樣用來標識唯一用戶。
WRITE_EXTERNAL_STORAGE
用於保存設備信息,以及記錄日誌。
GET_TASKS (建議)
獲取當前應用是否在顯示應用,可以更精準的統計用戶活躍
ACCESS_FINE_LOCATION(可選)
可通過GPS獲取設備的位置信息,用來修正用戶的地域分佈數據,使報表數據更準確。
ACCESS_COARSE_LOCATION(可選)
用來獲取該應用被使用的粗略位置信息。
快速集成-SDK初始化在應用程序的Application類的onCreate方法中初始化:
<code>public class MainApplication extends Application{ @Override public void onCreate() { super.onCreate(); JLibrary.InitEntry(this); //移動安全聯盟統一SDK初始化 TCAgent.LOG_ON=true; // App ID: 在TalkingData創建應用後,進入數據報表頁中,在“系統設置”-“編輯應用”頁面裡查看App ID。 // 渠道 ID: 是渠道標識符,可通過不同渠道單獨追蹤數據。 TCAgent.init(this, "您的 App ID", "渠道 ID"); // 如果已經在AndroidManifest.xml配置了App ID和渠道ID,調用TCAgent.init(this)即可;或與AndroidManifest.xml中的對應參數保持一致。 TCAgent.setReportUncaughtExceptions(true); }}/<code>
基礎-註冊和登錄註冊接口用於記錄用戶在使用應用過程中的註冊行為,接口如下:
<code>public static final void onRegister(String accountID,TDAccount.AccountType type, String name )/<code>
登錄接口用於記錄用戶在使用應用過程中的登錄行為,接口如下:
<code>public static final void onLogin(String accountID,TDAccount.AccountType type, String name )/<code>
基礎-錯誤報告1.用途收集應用的錯誤日誌可幫助您來修正Bug、改善產品。報表中,除了提供錯誤次數的數據外,還提供錯誤的詳細信息:錯誤發生時間,堆棧調用情況,並會針對錯誤進行合理分類。2.接口和參數
自動獲取異常信息,調用以下方法(自動捕獲默認為關閉狀態,請根據需要設置):
<code>// true: 開啟自動捕獲// false: 關閉自動捕獲TCAgent.setReportUncaughtExceptions(Boolean enabled)/<code>
主動傳送異常信息,調用以下方法(自動獲取關閉狀態下,此方法依然有效):
高級-頁面訪問1、用途和用法
此功能用於幫助開發者統計應用中各個頁面的訪問次數和停留時長,並可以追蹤用戶從某個頁面離開後所訪問的其他頁面,為產品優化提供依據。
2、接口及參數
接口: step1:進入頁面時調用:
<code>TCAgent.onPageStart(Context ctx, String pageName);/<code>
Step2:離開頁面時調用:
<code>TCAgent.onPageEnd(Context ctx, String pageName);/<code>
注意事項:
1)onPageStart 和 onPageEnd 必須成對調用;
適用範圍高級-自定義事件1、用途和用法
自定義事件用於追蹤任何需要了解的用戶行為,如:用戶點擊某功能按鈕、填寫某個輸入框、觸發了某個廣告等。
2、靈動事件介紹
靈動事件是一種無需預先埋點,隨時可以按需配置即可實現的自定義事件追蹤方式。在正確集成App Analytics SDK後,任何時候通過報表頁面設置,就可以輕鬆實現自定義事件追蹤。
3、代碼事件接口及參數
接口: 1)僅統計自定義事件,無需設置Label及參數時,調用以下方法:
<code>TCAgent.onEvent(Context ctx, String EVENT_ID);/<code>
2)使用相同EventID,對類似場景的事件進行統計,並通過Label區分具體場景時,調用以下方法:
<code>TCAgent.onEvent(Context ctx, String EVENT_ID, String EVENT_LABEL);/<code>
3)增加Label、事件參數,對事件做更為詳細的追蹤時,調用以下方法:
<code>TCAgent.onEvent(Context ctx, String EVENT_ID, String EVENT_LABEL, Map kv);/<code>
4)如果所有事件都需要傳輸相同的參數,可以設置全局的Key-Value,這些Key-Value會自動添加到所有自定義事件。調用以下方法:
<code>TCAgent.setGlobalKV(String key, Object value);/<code>
5)如果要移除全局Key-Value,調用以下方法:
<code>TCAgent.removeGlobalKV(String key);/<code>
說明:如果onEvent裡傳入的Key-Value裡的key和全局Key-Value裡的key衝突,以onEvent裡傳入的為準。
參數:
參數
類型
描述
EVENT_ID
String
自定義事件名稱。
最多包含64個字符,支持中文、英文、數字、下劃線,但不能包含空格或其他的轉義字符
EVENT_LABEL
String
自定義事件Label。
最多包含64個字符,支持中文、英文、數字、下劃線,但不能包含空格或其他的轉義字符。
Map
Map
自定義事件的參數及參數取值。
其中的Key為String,Value僅支持字符串(String)和數字(Number)類型,其他類型會自動調用toString()方法轉換為String進行處理。報表中將給出事件發生時每種value出現的頻次。
在value取值較離散情況下(如示例中收集的促銷價格信息),不要直接填充具體數值,而應劃分區間後傳入(如9.9元,可定義5~10元的價格區間,傳入5~10元),否則value不同取值很可能超過平臺最大數目限制,離散數據也對分析人員閱覽數據造成影響。
5、代碼事件示例
示例: 追蹤某省長者活體檢測的通過率情況,並收集檢測失敗的原因、比對的閾值等信息。調用如下:
<code>@Overridepublic void onClick(View v) {Map map= new HashMap();map.put("比對閾值","xxxx" );map.put("失敗詳情", "xxxx");TCAgent.onEvent(DemoActivity.this, "活體檢測", "失敗", map);}/<code>
閱讀更多 銀行小馬農的日常 的文章