Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Analytics demographics For Android App

I used Google Analytics Demographics on android app using Google play service library. i have updated my android code using enableAdvertisingIdCollection(). its working fine with screens and data. But its demographics info isn't working? Please suggest how do i handle demographics.

thanking you.

Code : Application code :

...

 synchronized Tracker getTracker( TrackerName trackerId, String appKey)
 {

    Log.d("Application", "In Application class getTracker PID" + appKey);
    if (!mTrackers.containsKey(trackerId))
    {

        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

        analytics.setDryRun(false);

        analytics.getLogger().setLogLevel(Logger.LogLevel.INFO);

        Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(appKey) : analytics
                .newTracker(R.xml.app_tracker);

        if (t != null)
        {
            t.enableAdvertisingIdCollection(true);
        }

        mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
}

...

code on oncreate()

...

 try
 {

    GoogleAnalytics.getInstance(getActivity()).reportActivityStart(getActivity());

        Tracker t = ((AppApplication) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER, Appkey);
        t.setScreenName("Home Screen");
        // t.setSampleRate(sampleRate);
        t.enableAdvertisingIdCollection(true);
        t.send(new HitBuilders.AppViewBuilder().build());


    }
    catch (Exception ex)
    {
        CustomLogger.showLog("GAcode", ex.getMessage());
    }
like image 883
Zitihsk aykahs Avatar asked Jan 12 '15 11:01

Zitihsk aykahs


1 Answers

Just for helping others, google support is a lot unclear about this piece of code:

Enabling Advertising Features

// Get tracker.

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
TrackerName.APP_TRACKER);

// Enable Advertising Features.

t.enableAdvertisingIdCollection(true);



The tracker there is the tracker initialized in your Application class, and get tracker is a function where you should create a List of trackers and get them by name. If you are using just one tracker, you can do:

 public static Tracker tracker;

@Override
public void onCreate() {
    super.onCreate();
    startGoogleAnalytics();
}

public void startGoogleAnalytics() {
    analytics = GoogleAnalytics.getInstance(this);
    analytics.setLocalDispatchPeriod(1800);

    tracker = analytics.newTracker(R.xml.global_tracker); // here you can add just your id value too
    tracker.enableExceptionReporting(true);
    tracker.enableAdvertisingIdCollection(true);
    tracker.enableAutoActivityTracking(true);
}

public synchronized Tracker getTracker() {
    if (tracker == null) {
        startGoogleAnalytics();
    }
    return tracker;
}

Then on your activity you can do:

    Tracker t = ((YouApplicationClassName)getApplication()).getTracker();
    t.enableAdvertisingIdCollection(true);
like image 104
Renato Probst Avatar answered Oct 11 '22 02:10

Renato Probst