【问题标题】:Google Analytics Tracker Not working for android appGoogle Analytics Tracker 不适用于 Android 应用
【发布时间】:2014-09-04 14:23:59
【问题描述】:

我在我的应用中加入了 Google 分析。 但是当我创建Tracker 的对象时,跟踪器不起作用

我的一项活动中的代码

    @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 小时后,它也没有显示在 Google Analytics 的应用程序概述部分中。

【问题讨论】:

  • 你能把你的代码放在oncreate里,然后把app_tracker.xml和其他两个xml文件放在res->xml文件夹里吗?

标签: android google-analytics google-analytics-firebase


【解决方案1】:

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

创建java文件 AnalyticsSampleApp.java 并在清单中注册此文件,例如在应用程序标记中使用 android:name="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());

【讨论】:

  • 我会试试这个并告诉你
  • 告诉你真相,它刚刚开始工作。虽然我在我的大部分屏幕上写了tracker.set("HomeActivity","Home");,但我用tracker.setScreenName("HomeActivity");替换了其他屏幕的跟踪器开始工作。但它应该已经工作了上面有onStart()。不知道为什么即使这样也不起作用
  • 跟踪 ID 和属性 ID 有什么区别?
  • @PankajAndroid ga_trackingId 和 PROPERTY_ID 表示我们从 google Analytics a/c 获得的跟踪 ID。我已经按照这篇文章给出的所有步骤samsulhoquesolution.wordpress.com/2014/09/23/…。谷歌分析 a/c 中仍然没有显示跟踪
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多