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

@nstudio/nativescript-mixpanel

v2.1.1

Published

A NativeScript plugin for Mixpanel tracking

Downloads

12

Readme

NativeScript Mixpanel

GitHub Workflow Status npm npm npm

A NativeScript plugin to provide the ability to integrate with Mixpanel.

Installation

From your command prompt/terminal go to your application's root folder and execute:

tns plugin add @nstudio/nativescript-mixpanel

Usage

Example

This can be initialised at various points in your application, i.e. in a service. However it is recommended to initialise this in your main.ts file.

Initialisation

import {
  NativeScriptMixpanel,
  NativeScriptMixpanelPeople,
} from "@nstudio/nativescript-mixpanel";

const MIXPANEL_TOKEN = "ABCDEF12345678";

// Init Mixpanel itself
NativeScriptMixpanel.init(MIXPANEL_TOKEN);

Identification

The Mixpanel library will assign a default unique identifier to each unique user who installs your application. This distinct ID is saved to device storage so that it will persist across sessions.

If you choose, you can assign your own user IDs. This is particularly useful if a user is using your app on multiple devices or platforms (both web and mobile, for example). To assign your own distinct_ids, you can use the identify method.

import { NativeScriptMixpanel } from "@nstudio/nativescript-mixpanel";

const someId = "test identity";
NativeScriptMixpanel.identify(someId);
// It is recommended to identify both the base and people instances.
NativeScriptMixpanel.getPeople().identify(someId);

Custom Logging / Logger Binding

If you need to pipe/funnel log output (i.e. for errors) to your own applications logger implementation, you can provide a binding to your logger through a simple object.

If you use this it is recommended to call useLogger before you init.

const customLogger: NativeScriptMixpanelLogger = {
  log: (tag: string, msg: string) => someOtherLogger.log(tag, msg),
  info: (tag: string, msg: string) => someOtherLogger.info(tag, msg),
  warn: (tag: string, msg: string) => someOtherLogger.warn(tag, msg),
  error: (tag: string, msg: string) => someOtherLogger.error(tag, msg),
};
NativeScriptMixpanel.useLogger(customLogger);

API

NativeScriptMixpanel

init(token: string): void

Get the instance of MixpanelAPI associated with your Mixpanel project token.

| Parameter | Type | Description | | --------- | ------ | ----------- | | token | string | |

NativeScriptMixpanel.init("token");

useLogger(providedLogger: NativeScriptMixpanelLogger): void

Replace the default console logger with a custom logger binding.

If you intend to use a custom logger or bound logger, this should be called before init to correctly output any errors.

| Parameter | Type | Description | | -------------- | -------------------------- | ------------------------------------------ | | providedLogger | NativeScriptMixpanelLogger | A new logger or object that binds a logger |

const customLogger: NativeScriptMixpanelLogger = {
  log: (tag: string, msg: string) => someOtherLogger.log(tag, msg),
  info: (tag: string, msg: string) => someOtherLogger.info(tag, msg),
  warn: (tag: string, msg: string) => someOtherLogger.warn(tag, msg),
  error: (tag: string, msg: string) => someOtherLogger.error(tag, msg),
};
NativeScriptMixpanel.useLogger(customLogger);

identify(distinctId: string): void

Associate all future calls to track(string, JSON) with the user identified by the given distinct id.

This call does not identify the user for People Analytics; to do that, see MixpanelAPI.People.identify(String). Mixpanel recommends using the same distinct_id for both calls, and using a distinct_id that is easy to associate with the given user, for example, a server-side account identifier.

Calls to track(string, JSON) made before corresponding calls to identify will use an anonymous locally generated distinct id, which means it is best to call identify early to ensure that your Mixpanel funnels and retention analytics can continue to track the user throughout their lifetime. We recommend calling identify when the user authenticates.

Once identify is called, the local distinct id persists across restarts of your application.

| Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | distinctId | string | A string uniquely identifying this user. Events sent to Mixpanel using the same distinct_id will be considered associated with the same visitor/customer for retention and funnel reporting, so be sure that the given value is globally unique for each individual user you intend to track. |

NativeScriptMixpanel.identify("test identity");

getDistinctId(): string

Returns the string id currently being used to uniquely identify the user associated with events sent using track. Before any calls to identify, this will be an id automatically generated by the library.

const distinctId = NativeScriptMixpanel.getDistinctId();

alias(alias: string): void

This function will create an alias to the current events distinct_id, which may be the distinct_id randomly generated by the Mixpanel library before identify(string) is called.

This call does not identify the user after. You must still call both identify and NativeScriptMixPanel.getPeople().identify if you wish the new alias to be used for Events and People.

| Parameter | Type | Description | | --------- | ------ | ------------------- | | alias | string | The new distinct_id |

NativeScriptMixpanel.alias("test alias");

registerSuperProperties(properties: JSON): void

Register properties that will be sent with every subsequent call to track.

SuperProperties are a collection of properties that will be sent with every event to Mixpanel, and persist beyond the lifetime of your application.

Setting a superProperty with registerSuperProperties will store a new superProperty, possibly overwriting any existing superProperty with the same name.

SuperProperties will persist even if your application is taken completely out of memory. To remove a superProperty, call unregisterSuperProperty or clearSuperProperties.

| Parameter | Type | Description | | ---------- | ---- | ----------------------------------------------------- | | properties | JSON | A JSON object containing super properties to register |

NativeScriptMixpanel.registerSuperProperties({
  "Test Type": "test value",
});

unregisterSuperProperty(superPropertyName: string): void

Remove a single superProperty, so that it will not be sent with future calls to track(String, JSONObject).

If there is a superProperty registered with the given name, it will be permanently removed from the existing superProperties.

To clear all superProperties, use clearSuperProperties.

| Parameter | Type | Description | | ----------------- | ------ | ---------------------------------- | | superPropertyName | string | name of the property to unregister |

NativeScriptMixpanel.unregisterSuperProperty("Test Type");

clearSuperProperties(): void

Erase all currently registered superProperties.

Future tracking calls to Mixpanel will not contain the specific superProperties registered before the clearSuperProperties method was called.

To remove a single superProperty, use unregisterSuperProperty.

NativeScriptMixpanel.clearSuperProperties();

track(eventName: string, properties?: JSON): void

Track an event.

Every call to track eventually results in a data point sent to Mixpanel. These data points are what are measured, counted, and broken down to create your Mixpanel reports. Events have a string name, and an optional set of name/value pairs that describe the properties of that event.

| Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------------------------------- | | eventName | string | The name of the event to send | | properties | JSON | A JSON object containing the key value pairs of the properties to include in this event |

NativeScriptMixpanel.track("test event", {
  tracking: "this",
});

timeEvent(eventName: string): void

Begin timing of an event. Calling timeEvent("Thing") will not send an event, but when you eventually call track("Thing"), your tracked event will be sent with a "$duration" property, representing the number of seconds between your calls.

| Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | eventName | string | the name of the event to track with timing |

const eventName = "Time Event Test";
NativeScriptMixpanel.timeEvent(eventName);

await new Promise((resolve) => setTimeout(resolve, 2000));
NativeScriptMixpanel.track(eventName);

getPeople(): NativeScriptMixpanelPeople

Returns a NativeScriptMixpanelPeople instance that can be used to identify and set properties.

const people = NativeScriptMixPanel.getPeople();

optInTracking(): void

Use this method to opt-in an already opted-out user from tracking.

People updates and track calls will be sent to Mixpanel after using this method. This method will internally track an opt-in event to your project.

const people = NativeScriptMixPanel.optInTracking();

optOutTracking(): void

Use this method to opt-out a user from tracking.

Events and people updates that haven't been flushed yet will be deleted. Use flush() before calling this method if you want to send all the queues to Mixpanel before.

This method will also remove any user-related information from the device.

const people = NativeScriptMixPanel.optOutTracking();

flush(): void

Push all queued Mixpanel events and People Analytics changes to Mixpanel servers.

Events and People messages are pushed gradually throughout the lifetime of your application. This means that to ensure that all messages are sent to Mixpanel when your application is shut down, you will need to call flush() to let the Mixpanel library know it should send all remaining messages to the server.

We strongly recommend placing a call to flush() in the onDestroy() method of your main application activity.

NativeScriptMixpanel.flush();

reset(): void

Clears tweaks and all distinct_ids, superProperties, and push registrations from persistent storage. Will not clear referrer information.

NativeScriptMixpanel.reset();

Contributors

  • Alex Miller
  • Antonio Cueva Urraco
  • Blake Nussey
  • Demetrio Filocamo