适用于Android的Google AnalyticsAPI v4不会发送屏幕视图

时间:2014-09-20 13:29:23

标签: java android google-analytics google-analytics-api google-analytics-v4

我为google analytics api v4设置了所有内容,如下所述:
https://developers.google.com/analytics/devguides/collection/android/v4/
和此处 http://www.javacodegeeks.com/2014/04/working-with-google-analytics-api-v4-for-android.html


我可以看到实时数据,但在特定时间段内无法看到屏幕,活跃用户,新用户和热门设备模型,例如"所有时间"。

Analytic不发送屏幕视图。


这是我的 global_tracker.xml

    <string name="ga_trackingId">UA-XXXXXXXX-Y</string>

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

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

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

    <screenName name="com.org.ScreenActivity1">Screen 1</screenName>
    <screenName name="com.org.ScreenActivity2">Screen 2</screenName>

这是我的 AndroidManifest.xml

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>

        <meta-data
            android:name="com.google.android.gms.analytics.globalConfigResource"
            android:resource="@xml/global_tracker"/>

这是我的 Analytics.java

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>();

    public Analytics() {
        super();
    }

    public synchronized Tracker getTracker(TrackerName trackerId) {

        if (!mTrackers.containsKey(trackerId)) {

            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

            if (trackerId == TrackerName.GLOBAL_TRACKER) {
                mTrackers.put(trackerId, analytics.newTracker(R.xml.global_tracker));
            }

        }

        return mTrackers.get(trackerId);
    }

这是我的活动类

protected void onCreate(Bundle bundle){
//......................

Tracker tracker = ((Analytics) getApplication()).getTracker(Analytics.TrackerName.GLOBAL_TRACKER);
        tracker.setScreenName("Main Activity");
        tracker.send(new HitBuilders.AppViewBuilder().build());

//......................

}

    @Override
    protected void onStart() {
        super.onStart();
        GoogleAnalytics.getInstance(this).reportActivityStart(this);
    }

    @Override
    protected void onStop() {
        super.onStop();
        GoogleAnalytics.getInstance(this).reportActivityStop(this);
    }

4 个答案:

答案 0 :(得分:10)

根据@stkent答案的问题是AppViewBuilder()已被弃用,因此您可以通过删除您需要的代码行来解决问题 并且在关注this之后帮助那些有同样问题的人 删除这行代码

 tracker.send(new HitBuilders.AppViewBuilder().build());

并添加此

  @Override
protected void onStart() {
    super.onStart();
    GoogleAnalytics.getInstance(this).reportActivityStart(this);
}

@Override
protected void onStop() {
    super.onStop();
    GoogleAnalytics.getInstance(this).reportActivityStop(this);
}

在您要跟踪的每项活动中

google doc关于这两种方法的其他信息

reportActivityStop
reportActivityStart

使用此功能进行自动跟踪是一个noop,因此您可以将其禁用

最初的答案是@skent post

答案 1 :(得分:2)

我失去了一天。从文档到互联网代码尝试各种各样,没有任何事情可以显示我的整体屏幕视图。最后,在今天午夜之后,他们出现了。

我想,如果Google实时数据(以onCreate或类似方式发送Tracker)对您有用,那么只需等待一天,该数据将在Google服务器上的某个位置进行处理,并在分析仪表板上完成一段时间后就绪。

PS。不听托尼,他的问题与此不一样。但是stkent对这个问题有一些很好的见解google analytics doesn't show the active user in Real time overview

答案 2 :(得分:2)

添加

<application
android:name="mypackagename.MyApplication"
... >
清单文件中的

可以解决问题。

答案 3 :(得分:1)

@tony是对的,HitBuilders.AppViewBuilder类已被弃用,但如果您不想,则无需实施onStart/Stop方法。 如上所述on GA's V4 tutorial(第4节),您可以用HitBuilders.ScreenViewBuilder()替换AppViewBuilder类,并且您将在所有平台上获得所需的结果。

在此处查看有关类参考API的更多详细信息: https://developer.android.com/reference/com/google/android/gms/analytics/HitBuilders.ScreenViewBuilder.html