Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Implement Google TagManager in Android Application

I want to implement Google Tag Manager and Google Analytics in my android application.

I am totally new to analytics and google tagmanager. I am following these link link1, , link2 through this I got some basic idea about Google Tag Manager and Google Analytics.

What I did is:
I created both Google TagManager account and Analytics account. Created all the basic step in TagManager and in Analytics account. Also I added libGoogleAnalyticsServices this file to project lib and gtm container in project file asset.

Now what I need is. What are all the codes I need to add in my application? And where I need to add this. I created one seperated java file in the src and I added these code

import com.google.android.gms.analytics.Logger;
import com.google.android.gms.analytics.Tracker;
import com.google.android.gms.analytics.GoogleAnalytics;

import android.app.Application;

import java.util.HashMap;

public class AnalyticsSampleApp extends Application {

// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID = "UA-XXXXX-Y";

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.
}

HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

public AnalyticsSampleApp() {
    super();
}

synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
        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);
        t.enableAdvertisingIdCollection(true);
        mTrackers.put(trackerId, t);
    }
    return mTrackers.get(trackerId);
}
}

Just tell me what are remaining codes I need to add and what I need to change in this. If my question is not understandable kindly comment below. Let me ask it clearly again.

Thanks a lot.

like image 626
iFido2020 Avatar asked May 15 '26 18:05

iFido2020


1 Answers

My advice is to use just GTM, and from the GTM account you can link the Google Analytics and others services that could help you.

Here is a nice guide that will help you.

In few words you need to:

  1. Include google play services as a library to your project
  2. Add a default container in your app under the res/row folder. This container you will be able to export it from the GTM account after you set up your macros and tags
  3. Add this lines in your Manifest file under application:

    <meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    
  4. Open the container in a initial screen (Splash screen for example)

    TagManager tagManager = TagManager.getInstance(this);
        tagManager.setVerboseLoggingEnabled(true);
    PendingResult<ContainerHolder> pending =
            tagManager.loadContainerPreferNonDefault(CONTAINER_ID,
            R.raw.default_container);
    pending.setResultCallback(new ResultCallback<ContainerHolder>() {
        @Override
        public void onResult(ContainerHolder containerHolder) {
            ContainerHolderSingleton.setContainerHolder(containerHolder);
            containerLoaded = true;
            startMainActivity();
        }
    }, 2, TimeUnit.SECONDS);
    
  5. create a class ContainerHolderSingleton

    public class ContainerHolderSingleton {
    private static ContainerHolder containerHolder;
    
    private ContainerHolderSingleton() {
    }
    
    public static ContainerHolder getContainerHolder() {
        return containerHolder;
    }
    
    public static void setContainerHolder(ContainerHolder c) {
        containerHolder = c;
    }
    

    }

    1. create another class GtmUtils

    public class GtmUtils {

    private GtmUtils() {
    }
    
    public static void pushOpenScreenEvent(Context context, String screenName) {
        DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
        dataLayer.pushEvent("OpenScreen", DataLayer.mapOf("screenName", screenName));
    }
    

    }

    1. And finally from any activity/fragment you want to send an event you can do something like this:

    GtmUtils.pushOpenScreenEvent(this, "login");

And that's it. You just need to set up your GTM account and link it with Analytics and so on.

Also you can find here the official documentation and some samples.

Home it will help.

like image 138
radu_paun Avatar answered May 17 '26 07:05

radu_paun



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!