简体   繁体   中英

The count of session multiplies when I use Google Analytics Android SDK v4

As my app, the count of session was about 1,000~2,000 when I was using Google Analytics Android SDK v3. 在此输入图像描述

But when I updated from v3 to v4, the count of session grows to 4,000~5,000. 在此输入图像描述

This is the global_tracker.xml:

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

<!-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>

<!-- The screen names that will appear in reports -->
<string name="ga_trackingId">xx-xxxx-xx</string>

And this is what I have done in the Application.java file:

public class ABCApplication extends Application {
...
private static Tracker t;

...
public synchronized Tracker getTracker() {

    if (this.t == null) {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        this.t = analytics.newTracker(R.xml.global_tracker);
    }
    return t;

}}

And this is the MainActivity.java file:

public class MainActivity {

@Override
public void onStart() {
    super.onStart();

    Tracker t = ((ABCApplication) this.getApplication()).getTracker();
    t.send(new HitBuilders.EventBuilder().setCategory("app").setAction("app_launch")
            .setLabel("start_google_analytics").build());
}

...}

What's the reason of this problem? And how can I solve it?

As we investigated, the root cause of this issue is Activity auto tracking. When Activity auto tracking is off, GA will close user session, after the 30 minutes from last event is gone. If Activity auto tracking is on, GA will end session after the app goes into background or user exit the app. Then launching the app within short period of time will create a new session in GA.

Maybe it has something to do with your timeout setting

Try adjusting this in your xml:

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

https://developers.google.com/analytics/devguides/collection/android/v4/sessions

Add this to your manifest:

<!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background
     dispatching on non-Google Play devices -->
<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
          android:enabled="true">
  <intent-filter>
    <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
  </intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.AnalyticsService"
         android:enabled="true"
         android:exported="false"/>

I've just done some preliminary testing, but after I added this it seems to be properly reporting session and duration again. Code snippet taken from: https://developers.google.com/analytics/devguides/collection/android/v4/#manifest

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM