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
<PackageReference Include="Artemkv.Journey3.Connector" Version="1.0.0" />
paket add Artemkv.Journey3.Connector --version 1.0.0
#r "nuget: Artemkv.Journey3.Connector, 1.0.0"
// 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 | Versions 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. |
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.1)
- System.Text.Json (>= 6.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
The initial release