Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Analytics Tracker Not working for android app

I have included Google analytics in my app. But when i create an object of Tracker the tracker does not work

Code in one of my activity

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

Now with this code i don't see the app in Realtime tracking but if i change the above code with this

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

I can see that one user is active in Realtime

Code for 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);
  }

Can any one tell me why tracker is not working?Also not only realtime but also in all the screens where i have included the tracker its not showing in App Overview section of Google Analytics ,even after 48 hrs.

like image 344
Deb Avatar asked Sep 04 '14 06:09

Deb


People also ask

Why is my Google Analytics not tracking?

Verify that you're tracking the right property and view. If you have access to multiple Google Analytics accounts and properties, there's a chance that you might be using the Google Analytics tracking code from another property, or you may be looking at reports in the wrong account, or for the wrong property and view.

Does Google Analytics work for mobile apps?

Analytics surfaces data about user behavior in your iOS and Android apps, enabling you to make better decisions about your product and marketing optimization. View crash data, notification effectiveness, deep-link performance, in-app purchase data, and more.


1 Answers

in res folder create xml folder with below three xml file

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>

create java file with AnalyticsSampleApp.java and register this file in menifest like in application tag with 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);
  }
}

in MainActivity onCreate put below

    Tracker t = ((AnalyticsSampleApp)this.getApplication()).getTracker(TrackerName.APP_TRACKER);
    t.setScreenName(TAG);
    t.send(new HitBuilders.AppViewBuilder().build());
like image 122
PankajAndroid Avatar answered Sep 30 '22 13:09

PankajAndroid