TABLE OF CONTENTS


In Trackier MMP, we provide you with an option to track real-time uninstalls for android applications. Setting this up is a simple three-step process:


1. Set up a common identifier


Add the following code to your app to set up a common identifier.


 private FirebaseAnalytics mFirebaseAnalytics; 

 FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); 

 mFirebaseAnalytics.setUserProperty("ct_objectId", Objects.requireNonNull(TrackierSDK.getTrackierId()));


The following fields can also be tracked with the uninstall:

  1. (optional) Application mode:

mFirebaseAnalytics.setUserProperty("ct_mode", Objects.requireNonNull(""));


  1. (optional) Customer user ID:

mFirebaseAnalytics.setUserProperty("ct_uid", Objects.requireNonNull(""));


  1. (optional) Customer email:

mFirebaseAnalytics.setUserProperty("ct_mail", Objects.requireNonNull(""));



2. Set up conversion event using firebase


Firebase analytics automatically collects the app_remove event, you will need to enable that.

This is an Android-only event that is tracked when an application is uninstalled from the device. To set this up, perform the following steps:


  1. Navigate to the firebase console and select the firebase project that is integrated with your android application.
  2. From the Firebase dashboard, navigate to Analytics > Events
  3. Enable the “Mark as conversion” toggle for the app_remove event.



3. Set up the cloud function to communicate uninstall data with Trackier


After the conversion is set up, use the cloud function for Firebase to create a function and send the uninstall data to Trackier MMP.


Pre-requisites:

  1. Your system should have nodejs (https://nodejs.org/en/) installed, preferably version 14 or higher. Run the following command to check the installed nodejs version node -v.

  2. Please make sure that your user in the application’s project on google cloud platform has the permission to create a cloud function here: https://console.cloud.google.com/functions/list


To create and publish a cloud function using Node JS, perform the following steps:


  1. Open a terminal.

  2. Set up Node.js and the Firebase CLI.

  3. Run npm install -g firebase-tools.

  4. To initialize Firebase SDK for Cloud Functions, run firebase login.

  5. From your Firebase project directory, run firebase init functions.

  6. Select Javascript as a language option.

  7. Move to the functions directory, run cd functions.

  8. Open index.js and add the following code:

// Import dependencies

const functions = require("firebase-functions");

const admin = require("firebase-admin");

const axios = require("axios");


// Configure SDK Key here

const SDK_KEY = "";


// Initialize application via firebase admin

admin.initializeApp();


// Set function to exports

exports.sendAndroidUninstallToTrackierMMP = functions.analytics.event("app_remove").onLog((event) => {

    // Extract values from user properties

    const installId = (event.user.userProperties.ct_objectId) ? event.user.userProperties.ct_objectId.value : "";

    const mode = (event.user.userProperties.ct_mode) ? event.user.userProperties.ct_mode.value : "";

    const cuid = (event.user.userProperties.ct_uid) ? event.user.userProperties.ct_uid.value : "";

    const cmail = (event.user.userProperties.ct_mail) ? event.user.userProperties.ct_mail.value : "";


    // Prepare data for request

    const url = "https://events.trackier.io/v1/uninstall";

    const data = JSON.stringify({ installId, sdkKey: SDK_KEY, mode, cuid, cmail, meta: event });



    // Send data back to Trackier MMP

    axios.post(url, data, { headers: { "Content-Type": "application/json" } })

        .then((response) => console.log(JSON.stringify({ installId, status: response.status, data: response.data })))

        .catch((error) => console.error(JSON.stringify({ installId, status: error.response.status, data: error.response.data })));

});


  1. Open package.json and add the following code:

{

    "name": "functions",

    "description": "Cloud Functions for Firebase",

    "scripts": {

        "lint": "eslint .",

        "serve": "firebase emulators:start --only functions",

        "shell": "firebase functions:shell",

        "start": "npm run shell",

        "deploy": "firebase deploy --only functions",

        "logs": "firebase functions:log"

    },

    "engines": {

        "node": "14"

    },

    "main": "index.js",

    "dependencies": {

        "axios": "^0.24.0",

        "firebase-admin": "^10.0.1",

        "firebase-functions": "^3.16.0"

    },

    "devDependencies": {

        "eslint": "^8.6.0",

        "firebase-functions-test": "^0.3.3"

    },

    "private": true

}


  1. Open .eslintrc.js and add the following code, create one if does not exist:

module.exports = {

    root: true,

    env: {

        es6: true,

        node: true,

    },

    extends: [

        "eslint:recommended",

    ],

    rules: {

        quotes: ["error", "double"]

    },

};


  1. Install all dependencies, run npm install.

  2. Deploy the cloud function, run npm run deploy.

  3. Once deployed, you can monitor the status of your cloud function here:
    https://console.cloud.google.com/functions/list