Artemkv.Journey3.Connector 1.0.0

dotnet add package Artemkv.Journey3.Connector --version 1.0.0                
NuGet\Install-Package Artemkv.Journey3.Connector -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Artemkv.Journey3.Connector" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Artemkv.Journey3.Connector --version 1.0.0                
#r "nuget: Artemkv.Journey3.Connector, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Artemkv.Journey3.Connector as a Cake Addin
#addin nuget:?package=Artemkv.Journey3.Connector&version=1.0.0

// Install Artemkv.Journey3.Connector as a Cake Tool
#tool nuget:?package=Artemkv.Journey3.Connector&version=1.0.0                

Xamarin connector for Journey3 (Lightweight Anonymous Mobile Analytics)

Features

Use this connector in your Xamarin app to:

  • Track sessions, unique users and new users
  • Track application feature usage
  • Track user journey stage conversions
  • Track user retention

Getting started

  • Register and get an application key at https://journey3.net/
  • Initialize the connector to start tracking stats

Usage

Installing the connector

Install-Package Artemkv.Journey3.Connector -Version <version>

Initializing the connector

using Artemkv.Journey3.Connector;

// In MainActivity
protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    Journey.GetInstance().InitializeAsync(
        "<accountId>",
        "<appId>",
        VersionTracking.CurrentVersion,
        !IsDebug());

    // ...
}

public static bool IsDebug()
{
#if DEBUG
    return true;
#else
    return false;
#endif
}

Report an event

Events are used to track feature usage:

Journey.GetInstance().ReportEvent("click_play");

Report an error

Errors are special types of events:

Journey.GetInstance().ReportError("err_loading_catalog");

Report a crash

Crashes are yet another types of events.

Android:

using Artemkv.Journey3.Connector;

// In MainActivity
protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
    TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;    

    // ...
}

private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Journey.GetInstance().ReportCrash("crash");
}

private void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
    Journey.GetInstance().ReportCrash("crash");
}

iOS:

// In AppDelegate
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
    TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;    

    // ...
}

private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Journey.GetInstance().ReportCrash("crash");
}

private void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
    Journey.GetInstance().ReportCrash("crash");
}

Report a stage transition

Stage transitions are used to build user conversion funnels:

Journey.GetInstance().ReportStageTransition(2, "explore");

It's up to you what stages you would like to use, we recommend to start with the following stages:

stage name comment
1 'new user' Is used as an initial stage by default for all sessions. You don't need to report this stage
2 'explore' The user has used some basic features of the app. For example: the user has browsed through the catalog of music albums
3 'engage' The user has used one of the main features of the app. For example: the user has started playing the album
4 'commit' The user has bought the subscription service for your app

You don't need to remember which stage you already reported. The plugin will remember the highest stage that you reported.

Maximum 10 stages are supported.

GDPR compliance

Journey3 is designed to be anonymous by default.

Most of the data is stored in the aggregated form (as counters), the session correlation is done on the device itself.

We store:

  • Number of session in the given period of time, by version;
  • Number of unique users in the given period of time, by version;
  • Number of new users in the given period of time, by version;
  • Number of events in the given period of time, by event name and version;
  • Number of sessions that triggered an event in the given period of time, by event name and version;
  • Number of sessions with errors in the given period of time, by version;
  • Number of sessions with crashes in the given period of time, by version;
  • Number of stage hits in the given period of time, by version;
  • Number of sessions bucketed by duration, in the given period of time, by version;
  • Number of sessions bucketed by retention, in the given period of time, by version.

In addition to counters, Journey3 stores sessions. A session includes the following data:

  • Version;
  • Duration;
  • Whether the session is from the first time user;
  • The sequences of events.

The retention period for the session is 15 days.

We don't store any device information or anything that can help identifying a user. These is no field that would allow to link sessions from the same user.

To preserve the anonymity, use event names that describe the feature used, and avoid adding any identifiable data.

Example, good: 'click_play', 'click_pause', 'add_to_favorites', 'search_by_artist'.

Example, bad: 'user_12345_bought_item_34556'

As we don't track any personally personally identifiable data, and make our best effort to render the stored data anonymous, we judge that the data collected by the connector does not fall within the scope of the GDPR. This means you don't need to ask for the user opt-in.

That is, unless you abuse the API and use event or stage names that break the anonymity.

This assumption might also break due to some specific circumstances related to your app nature and purpose that we cannot predict.

This is why we encourage you to review the terms of GDPR law and make your own final decision whether to enable the connector with or without opt-in, and whether to mention the data collected in your privacy policy.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 415 8/18/2022
0.0.1 376 8/18/2022

The initial release