npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nativescript-google-analytics-demographics

v0.3.5

Published

Integrate native google analytics iOS and Android widgets into NativeScript, with support for demographics

Downloads

5

Readme

Nativescript Google Analytics

Release Notes

Add Plugin

tns plugin add nativescript-google-analytics-demographics 

Get Config files

  • iOS instructions
  • Android instructions
  • Click the "Get a Configuration File" instrutctions
  • Add the platform specific config file you just downloaded to its respective App_Resources/{platform} folder

Initalize the tracker in app.js

PLAIN JS

var application = require("application");
var googleAnalytics = require("nativescript-google-analytics");
application.mainModule = "main-page";
application.cssFile = "./app.css";

if (application.ios) {
    //iOS
    var __extends = this.__extends || function (d, b) {
        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
        function __() { this.constructor = d; }
        __.prototype = b.prototype;
        d.prototype = new __();
    };
    
    var appDelegate = (function (_super) {
        __extends(appDelegate, _super);
        function appDelegate() {
            _super.apply(this, arguments);
        }
        
        appDelegate.prototype.applicationDidFinishLaunchingWithOptions = function (application, launchOptions) {
            initAnalytics(); //Module Code to initalize
        };
        
        appDelegate.ObjCProtocols = [UIApplicationDelegate];
        return appDelegate;
    })(UIResponder);
    application.ios.delegate = appDelegate;
}else{
    //ANDROID
    application.on(application.launchEvent, function (args) {
        initAnalytics(); //Module Code to initalize
    });

}

application.start();

function initAnalytics(){
    googleAnalytics.initalize({
                trackingId: "UA-XXXXXXXX-1", //YOUR Id from GA
                //userId: "9ac7a034-ffde-4783-8374-f78b3df39d32", //Optional
                dispatchInterval: 5,
                logging: {
                    native: true,
                    console: false
                }
            });
}

Typescript

var application = require("application");
import * as googleAnalytics from "nativescript-google-analytics";
application.mainModule = "main-page";
application.cssFile = "./app.css";

if (application.ios) {
    //iOS
    class MyDelegate extends UIResponder implements UIApplicationDelegate {
        public static ObjCProtocols = [UIApplicationDelegate];

        applicationDidFinishLaunchingWithOptions(application: UIApplication, launchOptions: NSDictionary): boolean {
            initAnalytics(); //Module Code to initalize
            return true;
        }

    }

    application.ios.delegate = MyDelegate;

}else{
    //ANDROID
    application.on(application.launchEvent, function (args) {
        initAnalytics(); //Module Code to initalize
    });

}

application.start();

function initAnalytics(){
    googleAnalytics.initalize({
                trackingId: "UA-XXXXXXXX-1", //YOUR Id from GA
                //userId: "9ac7a034-ffde-4783-8374-f78b3df39d32", //Optional
                dispatchInterval: 5,
                logging: {
                    native: true,
                    console: false
                }
            });
}

Methods

Initalize Options

// category and action are not optional, label and value are
googleAnalytics.initalize(
    {
      trackingId: "UA-XXXXXXX-1",
      userId: "(some userid value)", //Optional! Needs to be enabled on the tracking account: https://support.google.com/analytics/answer/3123666#FindTheUserID
      dispatchInterval: 30, //(Value in seconds)...Default Android is 30 minutes, default iOS is 2 minutes (120 seconds).  Disable by setting to 0.
      logging: {
         native: false, //Default false, should not be used in production
         console: false   
      }
    });

Log Event

// category and action are not optional, label and value are
googleAnalytics.logEvent(
    {
      category: "MyCategory",
      action: "MyAction",
      label: "MyLabel",
      value: 7
    });

Log ScreenView

// category and action are not optional, label and value are
googleAnalytics.logView("Secondary-Page");

Flush Message queue (dispatch)

googleAnalytics.dispatch();

Log exceptions

googleAnalytics.logException({
        description: "Cat tried to divide by 0...",
        fatal: true //Optional, default false... if true will be a "Crash" in GA.  False is an "Exception"
    });
//or
googleAnalytics.logException("Ergmagerd excerpshern");

Log timings

    //OPTION 1: Auto (Time is stored internally, just call stopTimer when you're done)
    googleAnalytics.startTimer("Logo Timer", {
                                category: "Animations",
                                name: "Rotate the logo", //Optional
                                label: (application.ios) ? "iOS" : "Android"  //Optional
                            });
    /* ... time passes as you do something ... */
    googleAnalytics.stopTimer("Logo Timer");
    

    //OPTION 2: Raw, calculate and send yourself
    googleAnalytics.logTimingEvent({
        category: "Animations",
        value: diffMilliseconds, //Milliseconds, example 4000
        name: "Rotate the logo", //Optional
        label: "Some Label" //Optional
    }); 

Issues

Android

Error: Could not find com.google.android.gms:play-services-analytics:8.4.0

Resolution: *Open the Android Studio SDK manager, make sure all of your build tools are up to date. Then make sure your Google Play Services and Google Repository packages are up to date. In the Android Studio sdk manager, you'll find these under the "SDK Tools" tab. If you are using the standalone sdk manager, you would scroll down to the "Extras" section at the bottom and update them there *