2014-09-04 131 views
4

我已將Google分析包括在我的應用程序中。 但是,當我創建的Tracker對象跟蹤不會在我的活動之一,此代碼的工作谷歌Analytics(分析)跟蹤器不適用於Android應用程序

代碼現在

@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    try{ 
     tracker=((GoogleAnalyticsConfig)this.getApplication()).getTracker(GoogleAnalyticsConfig.TrackerName.APP_TRACKER); 
     tracker.setScreenName("HomeActivity"); 
     tracker.send(new HitBuilders.AppViewBuilder().build()); 
    }catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

我沒有看到在實時應用程序跟蹤 但如果我改變與此

@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    try{ 
     GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
     analytics.reportActivityStart(this); 
    }catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

上面的代碼我可以看到,一個用戶在實時

鈷是活性德爲GoogleAnalyticsConfig

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. 
    } 

    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); 
// The following line should be changed to include the correct property id. 
private static final String PROPERTY_ID ="UA-XXXXXXXX-1"; 

public synchronized Tracker getTracker(TrackerName trackerId) { 
    if (!mTrackers.containsKey(trackerId)) { 

     GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
     Tracker t = analytics.newTracker(PROPERTY_ID); 
     t.enableAutoActivityTracking(true); 

     mTrackers.put(trackerId, t); 

    } 
    return mTrackers.get(trackerId); 
    } 

任何一個可以告訴我,爲什麼跟蹤器不工作?另外,不僅實時而且在所有的地方我已經包括它不是在谷歌分析的應用程序概述部分顯示了跟蹤屏幕,即使在48小時。

+0

你可以把你的代碼放在oncreate中,並且把app_tracker.xml和其他兩個xml文件放在res-> xml文件夾中嗎? – PankajAndroid 2014-09-04 06:06:58

回答

7
在res

文件夾中創建XML文件夾下面三種XML文件

app_tracker.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<!-- Replace placeholder ID with your tracking ID --> 
<string name="ga_trackingId">XX-XXXXXXXX-X</string> 

<bool name="ga_autoActivityTracking">true</bool> 
<bool name="ga_reportUncaughtExceptions">true</bool> 

<string name="ga_appName">Serivce</string> 
<string name="ga_appVersion">1.1.3</string> 

<bool name="ga_debug">true</bool> 

<item name="ga_dispatchPeriod" format="integer" type="integer">120</item> 

<string name="ga_sampleFrequency">90</string> 

<bool name="ga_anonymizeIp">true</bool> 
<bool name="ga_dryRun">false</bool> 

<!-- Percentage of events to include in reports --> 
<string name="ga_sampleFrequency">100.0</string> 

<!-- How long a session exists before giving up --> 
<integer name="ga_sessionTimeout">-1</integer> 

<string name="com.example.ui.MainActivity">MainActivity</string> 

ecommerce_tracker.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<integer name="ga_sessionTimeout">60</integer> 
<!-- The following value should be replaced with correct property id. --> 
<string name="ga_trackingId">XX-XXXXXXX-1</string> 
</resources> 

global_tracker.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<!-- The following value should be replaced with correct property id. --> 
<string name="ga_trackingId">XX-XXXXXXX-1</string> 

<integer name="ga_sessionTimeout">300</integer> 

<bool name="ga_autoActivityTracking">true</bool> 

<!-- 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> 

<screenName name="com.example.ui.MainActivity">MainActivity</screenName> 

創建 AnalyticsSampleApp.java的java文件,並登記在menifest這個文件就像在Android應用程序標籤:名字= 「com.example.ui.AnalyticsSampleApp」

public class AnalyticsSampleApp extends Application { 

// The following line should be changed to include the correct property id. 
private static final String PROPERTY_ID = "XX-XXXXXX-1"; 

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. 
} 

public HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); 

public AnalyticsSampleApp() { 
    super(); 
} 

public synchronized Tracker getTracker(TrackerName trackerId) { 
    if (!mTrackers.containsKey(trackerId)) { 
     GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
     Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID): (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker): analytics.newTracker(R.xml.ecommerce_tracker); 
     mTrackers.put(trackerId, t); 

    } 
    return mTrackers.get(trackerId); 
    } 
} 
在MainActivity的onCreate

放在下面

Tracker t = ((AnalyticsSampleApp)this.getApplication()).getTracker(TrackerName.APP_TRACKER); 
    t.setScreenName(TAG); 
    t.send(new HitBuilders.AppViewBuilder().build()); 
+0

我會試試這個,讓你知道 – Deb 2014-09-04 07:00:55

+0

@Deb你能找到你的代碼中有什麼問題嗎? – PankajAndroid 2014-09-05 07:35:57

+0

告訴你事實真相,儘管我寫了 'tracker.set(「HomeActivity」,「Home」);'在我的大部分屏幕上,我用'tracker.setScreenName(「HomeActivity」)替換了'';並且其他屏幕的跟蹤器開始工作。但它應該與上面的'onStart()'一起工作。不知道爲什麼即使這不起作用 – Deb 2014-09-05 13:58:25

相關問題