New Relic和Verivo是現在移動領域的優秀者。New Relic是一款效能良好的監視工具。如果登陸進去,在你的名字上面會顯示一個資料書呆子樣式的T恤。Verivo是一款企業級的移動應用平臺,它被設計成為特別簡化了編譯,安全和控制企業級應用。
對於Android平臺的Google Analytics API V4,Google已經將其移動到了Google play Services,同時將EasyTracker類從中移除。但您能得到一個相對簡單的“自動”跟中和小的消耗。下面我將介紹它的使用方法。
假設
* 您已經使用過Google Analytics v3 API EasyTracker 類,並且您想要做一個基本的遷移。
* 您想要建立一個基本的分析軌跡,那時候傳送一個“Hit”當使用者啟動一個活動的時候。
* 您已經安裝了最新的Google Play Services,並且執行在您的Android應用中。
讓我們開始吧
因為您已經有Goolge Play Services類庫在您的編譯環境中,您的程式碼將可以使用所有幫助類(如何不能請點這裡)。在Google Analytics API V4中,有一些幫助類和配置選項。它們能啟動並且執行良好。但是我發現這個文件沒有描述清楚,所以下面我將詳細描述……
第一步
建立下面的global_tracker.xml配置檔案,並將它放在您的Android應用程式的res/xml資料夾下。該檔案將作為一個基本的全域性配置被GoogleAnalytics使用。您需要為您的應用程式指導名稱。注意,在這個檔案中沒有“Tracking ID”,它會在之後建立。ga_dryRun元素是用來開啟或關閉傳送給GoogleAnalytics的跟蹤報告。為了防止debug資料混淆您可以使用這個設定。
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 |
; html-script: false ] <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" <span style="line-height: 1.5; font-style: inherit; font-weight: inherit;">tools:ignore="TypographyDashes"></span> <!-- the Local LogLevel for Analytics --> <string name="ga_logLevel">verbose</string> <!-- how often the dispatcher should fire --> <integer name="ga_dispatchPeriod">30</integer> <!-- Treat events as test events and don't send to google --> <bool name="ga_dryRun">false</bool> <!-- The screen names that will appear in reports --> <string name="com.mycompany.MyActivity">My Activity</string> </resources> |
第二步
新增第二個檔案app_tracker.xml到相同的目錄(res/xml)。在這個檔案中有以下幾點需要注意:改變ga_trackingId為he Google Analytics Tracking Id (您能得到該值通過分析控制檯)。設定ga_autoActivityTracking為”true”是非常重要的-這會簡化從您的程式碼中設定和傳送跟蹤點選。最後,確定使用您自己定義的名稱,新增到您要跟蹤的Activity中。
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 |
; html-script: false ] <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" <span style="line-height: 1.5; font-style: inherit; font-weight: inherit;">tools:ignore="TypographyDashes"></span> <!-- The apps Analytics Tracking Id --> <string name="ga_trackingId">UX-XXXXXXXX-X</string> <!-- Percentage of events to include in reports --> <string name="ga_sampleFrequency">100.0</string> <!-- Enable automatic Activity measurement --> <bool name="ga_autoActivityTracking">true</bool> <!-- catch and report uncaught exceptions from the app --> <bool name="ga_reportUncaughtExceptions">true</bool> <!-- How long a session exists before giving up --> <integer name="ga_sessionTimeout">-1</integer> <!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to substitute for the full length canonical Activity name in screen view hit. In order to specify an alternate screen name use an <screenName> element, with the name attribute specifying the canonical name, and the value the alias to use instead. --> <screenName name="com.mycompany.MyActivity">My Activity</screenName> </resources> |
第三步
最後配置修改您的AndroidManifest.xml檔案,在application標籤下新增下面的程式碼。使用res/xml/global_tracker.xml配置GoogleAnalytics類(單例類控制Tracker例項的建立)
1 2 3 4 5 6 |
; html-script: false ] <!-- Google Analytics Version v4 needs this value for easy tracking --> <meta-data android:name="com.google.android.gms.analytics.globalConfigResource" android:resource="@xml/global_tracker" /> |
所有的Xml檔案配置完成。
第四步
現在我們可以新增(或者修改)您的應用程式的“Application”類,讓它與我們引用的Activity包含相同的Trackers。
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 |
; html-script: false ] package com.mycompany; import android.app.Application; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; import java.util.HashMap; public class MyApplication extends Application { // The following line should be changed to include the correct property id. private static final String PROPERTY_ID = "UX- XXXXXXXX-X"; //Logging TAG private static final String TAG = "MyApp"; public static int GENERAL_TRACKER = 0; public enum TrackerName { APP_TRACKER, // Tracker used only in this app. GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking. ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company. } HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); public MyApplication() { super(); } synchronized Tracker getTracker (TrackerName trackerId) { if (!mTrackers.containsKey(trackerId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance (this); Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml.app_tracker) : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(PROPERTY_ID) : analytics.newTracker(R.xml.ecommerce_tracker); mTrackers.put(trackerId, t); } return mTrackers.get(trackerId); } } |
第五步
最後,我們新增具體的hit程式碼到我們的Activity中。首先,匯入com.google.android.gms.analytics類。GoogleAnalytics和初始化您的應用層tracker在onCreate方法中。在每個您想跟蹤的activity中新增下面程式碼:
1 2 3 |
; html-script: false ] //Get a Tracker (should auto-report) ((MyApplication) getApplication()).getTracker(MyApplication.TrackerName.APP_TRACKER); |
之後,在onStart方法中記錄使用者開始“Hit”。在每個您想跟蹤的activity中新增下面程式碼:
1 2 3 4 5 |
; html-script: false ] //Get an Analytics tracker to report app starts & uncaught exceptions etc. GoogleAnalytics.getInstance (this).reportActivityStart(this); |
接下來,記錄傳送停止hit結束使用者活動在onStop方法中。在每個您想跟蹤的activity中新增下面程式碼:
1 2 3 |
; html-script: false ] //Stop the analytics tracking GoogleAnalytics.getInstance(this).reportActivityStop(this); |
然後,如何您現在編譯安裝你的應用在您的裝置上,設定 ga+logLevel為verbose和ga+dryRun為false。在logCat中,您能看見一些Google Analytics傳送的log。
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 |
; html-script: false ] 04-11 13:25:05.026 13287-13304/com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: connecting to Analytics service 04-11 13:25:05.030 13287-13304/com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: connect: bindService returned false for Intent { act=com.google.android.gms.analytics.service.START cmp=com.google.android.gms/.analytics.service.AnalyticsService (has extras) } 04-11 13:25:05.030 13287-13304/com.mycompany.myapp W/GAV3? Thread[GAThread,5,main]: Service unavailable (code=1), will retry. 04-11 13:25:05.043 13287-13304/com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: Loaded clientId 04 -11 13:25:05.045 13287-13304/com.mycompany.myapp I/GAV3? Thread[GAThread,5,main]: No campaign data found. 04-11 13:25:05.045 13287-13304/com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: Initialized GA Thread 04-11 13:25:05.067 13287- 13304/com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: putHit called ... 04-11 13:25:10.106 13287- 13304/com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: Dispatch running... 04-11 13:25:10.623 13287- 13304/com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: sent 1 of 1 hits |