Google Analytics Advanced Configuration - Google Analytics 高级配置
????? 該文檔提供了Android SDK v3的部分元素的高級配置說明。
Overview - 概述
????? Android Google Analytics SDK提供了Tracker類,應用可以用它給Google Analytics設置和發送數據,GoogleAnalytics的單例為你實現的全局配置值提供了接口。
Initialization - 初始化
????? 在開始檢測數據之前,你必須通過GoogleAnalytics單例實現至少一個跟蹤,你需要提供的參數有Context和Google Analytics的屬性ID。
????? // 使用Google Analytics的屬性ID來初始化一個跟蹤
????? GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y")
????? 現在,這個tracker可以給Google Analytics設置和發送數據了。
Setting and Sending Data - 設置和發送數據
????? 通過tracker的set方法把發送給Google Analytics的數據設置為鍵-值對的形式,然后通過send方法把數據發送給Google Analytics。
?
/** 在tracker上設置map的參數值,并通過調用send方法把屏幕上的視圖發送給Google Analytics*/Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y");HashMap<String, String> hitParameters = new HashMap<String, String>();hitParameters.put(Fields.HIT_TYPE, "appview");hitParameters.put(Fields.SCREEN_NAME, "Home Screen");tracker.send(hitParameters);????? MapBuilder類簡化了構建頁面元素點擊的進程,在大多數用戶安全中,這種方式是推薦的。你可以使用它來發送同樣的屏幕視圖,但是使用的代碼更少:
????????
// 使用MapBuilder.createAppView()方法來發送同樣的屏幕視圖的點擊事件 tracker.(MapBuilder.createAppView().set(Fields.SCREEN_NAME, "Home Screen").build());?
Applying Values to Multiple Hits - 給多個屏幕的頁面元素應用值
????? 直接設置在tracker上的值將會保持住,并將其應用給多個點擊事件,例如:
?
// 在tracker上設置的屏幕名稱,將在發送所有的點擊事件時都被應用 tracker.set(Fields.SCREEN_NAME, "Home Screen");// 為"Home Screen"發送屏幕視圖 tracker.send(MapBuilder.createAppView().build());// This event will also be sent with &cd=Home%20Screen. tracker.send(MapBuilder.createEvent("UX", "touch", "menuButton", null).build());// 清理我們曾經設置過的屏幕名稱字段 tracker.set(Fields.SCREEN_NAME, null);?
????? 僅僅當你想在多個頁面元素上保持某個值時,你才需要把它直接設置在tracker上。在tracker上設置屏幕名稱是有意義的,因為同樣的值可以被應用給隨后發生的子視圖和點擊事件上。但是,不建議在tracker上設置類似于點擊類型的字段,因為它極有可能在每次點擊時改變。
Using Multiple Tracker - 使用多個Tracker
????? 在同一個單個的實例里,可以使用多個tracker,這樣的做法在把數據發送給多個屬性時很有用。
?
Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1");// tracker可以被命名。默認地,名稱為要被設置的屬性ID Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("altTracker", "UA-XXXX-2";t1.set(Fields.SCREEN_NAME, "Home Screen");t2.set(Fields.SCREEN_NAME, getClass().toString());//給 UA-XXXX-1發送屏幕視圖 t1.send(MapBuilder.createAppView().build());// 給UA-XXXX-2發送屏幕視圖 t2.send(MapBuilder.createAppView().build());?
????? 像動態屏幕檢測和未捕獲的異常檢測一樣,自動檢測元素將不僅僅使用一個tracker給Google Analytics發送數據。如果你使用了這些元素并想使用其它tracker發送數據時,你需要手動的做這些。
Using the Default Tracker - 使用默認的Tracker
????? Google Analytics包含默認的tracker。被第一個初始化的tracker就會成為默認的tracker,但是它可以被重寫。
?
// Tracker t1成為默認的tracker,因為它是首先被實例化的 Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1");Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-2");//返回tracker t1. Tracker defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker();// 點擊事件發送給UA-XXXX-1. defaultTracker.send(MapBuilder.createAppView().set(Fields.SCREEN_NAME, "Home Screen").build());// 重寫默認的tracker. GoogleAnalytics.getInstance(this).setDefaultTracker(t2);// 現在該調用會返回tracker t2. defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker();// 點擊事件發送給UA-XXXX-2. defaultTracker.send(MapBuilder.createAppView().set(Fields.SCREEN_NAME, getClass().toString()).build());?
Sampling - 抽樣
????? 你可以啟動客戶端抽樣來限制發送給Google Analytics點擊事件的數量。如果你的應用有大量的用戶或者給Google Analytics發送了大量的數據,啟動抽樣可以確保不間斷的匯報。
????? 例如,通過EasyTracker和XML啟動客戶端50%的抽樣率:
????? <string name="ga_sampleFrequency">50.0</string>
????? 以編輯的方式給tracker啟用客戶端的采樣率:
????? mTracker.set(Fields.SAMPLE_RATE, 50.0d);
????? 為了防止匯報矛盾,你應用的每個視圖都應該以相同的抽樣進行數據的收集。如果你應用的不同版本使用不同的抽樣頻率,在你單個應用的不同版本里,為給不同應用版本范圍保存各自的數據,你需要配置視圖(profile)。
App-level Opt Out - 暴露的應用級別選項
????? 你可以使用暴露出的應用級別的選項,使用它們可以在整個應用里禁用Google Analytics。注意:在應用每次啟動時你都需要設置該標識,它的默認值是false。
????? 為了獲取暴露的應用級別選項,你可以這樣做:
????? boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();
為了設置暴露的應用級別選項,你可以這樣做:
????? GoogleAnalytics.getInstance(this).setAppOptOut(true);
????? 一種典型的實現是:某個應用可能會監聽SharedPreferences文件的改變,并且更改Google Analytics暴露的選項:
?
SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {if (key.equals(TRACKING_PREF_KEY)) {GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));} else {// 其它的代碼 }}});?
Testing and Debugging - 測試和調試
????? Android Google Analytics SDK提供了更簡單進行測試和調試的工具。
Dry Run
????? SDK提供了dryRun標識,如果設置了它,那么就會阻止任何發送給Google Analytics的數據。在你測試或是調試一個實現時,并不想讓這些數據出現在你Google Analytics的匯報里,那你應該設置該標識。
????? // When dry run is set, hits will not be dispatched, but will still be logged as
????? // though they were dispatched.
????? GoogeAnalytics.getInstance(this).setDryRun(true);
Logger
????? Logger接口將會從SDK里處理有用的信息,一共有幾個級別:error,warning,info,verbose。
????? SDK會初始化一個標準的Logger實現,它默認僅僅只會讀取打印到console控制臺的warning和error類型的信息。這些信息在logcat里是可用的。
????? // 把日志的級別設置為verbose
????? GoogleAnalytics.getInstance(this).getLogger().setLogLevel(LogLevel.VERBOSE);
????? 可以使用自定義的Logger的實現:
????? // 提供自定義的logger
????? GoogleAnalytics.getInstance(this).setLogger(new CustomLogger ());
Complete Example - 完整的例子
????? 下面的代碼展示了初始化Google Analytics實現的必須的代碼,并發送了一個屏幕的視圖:
?
package com.example.app;import com.google.analytics.tracking.android.GAServiceManager;import com.google.analytics.tracking.android.GoogleAnalytics;import com.google.analytics.tracking.android.Tracker;import android.app.Application;import android.content.SharedPreferences;import android.preference.PreferenceManager;/** 在Application的子類里初始化的Google Analytics的進階實現。* 注意:該例假設只給一個Google Analytics屬性ID發送屬性。*/public class MyApp extends Application {private static GoogleAnalytics mGa;private static Tracker mTracker;/** Google Analytics配置值.*/// Placeholder property ID.private static final String GA_PROPERTY_ID = "UA-XXXX-Y";// Dispatch period in seconds.private static final int GA_DISPATCH_PERIOD = 30;// Prevent hits from being sent to reports, i.e. during testing.private static final boolean GA_IS_DRY_RUN = false;// GA Logger verbosity.private static final LogLevel GA_LOG_VERBOSITY = LogLevel.INFO;// Key used to store a user's tracking preferences in SharedPreferences.private static final String TRACKING_PREF_KEY = "trackingPreference";/** 處理基本Google Analytics初始化的方法。 * 因為所有的Google Analytics的工作都發生在主線程之外,因此該調用不會阻塞主線程*/private void initializeGa() {mGa = GoogleAnalytics.getInstance(this);mTracker = mGa.getTracker(GA_PROPERTY_ID);// 設置調試周期 GAServiceManager.getInstance().setLocalDispatchPeriod(GA_DISPATCH_PERIOD);// 設置dryRun標識 mGa.setDryRun(GA_IS_DRY_RUN);// 設置Logger級別 mGa.getLogger().setLogLevel(GA_LOG_VERBOSITY);// Set the opt out flag when user updates a tracking preference. SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {if (key.equals(TRACKING_PREF_KEY)) {GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));}}});}@Overridepublic void onCreate() {super.onCreate();initializeGa();}/** 返回Google Analytics tracker*/public static Tracker getGaTracker() {return mTracker;}/** 返回Google Analytics實例*/public static GoogleAnalytics getGaInstance() {return mGa;}}?
????? 接著,當第一個屏幕顯示給用戶時,屏幕視圖被檢測。
?
package com.example.appimport android.app.Activity/*** 當Activity給用戶顯示時,該activity給Google Analytics發送一個屏幕視圖*/public class HomeScreen extends Activity {private static final String SCREEN_LABEL = "Home Screen";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Fields set on a tracker persist for all hits, until they are// overridden or cleared by assignment to null. MyApp.getGaTracker().set(Fields.SCREEN_NAME, SCREEN_LABEL);}@Overridepublic void onStart() {super.onStart();// Send a screen view when the Activity is displayed to the user. MyApp.getGaTracker().send(MapBuilder.createAppView.build());}}
?
?
轉載于:https://www.cnblogs.com/wchhuangya/p/3308927.html
總結
以上是生活随笔為你收集整理的Google Analytics Advanced Configuration - Google Analytics 高级配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flex中宽度计算
- 下一篇: eclipse环境变量配置步骤