1
0
mirror of https://github.com/bitwarden/mobile synced 2025-12-11 22:03:27 +00:00

Added google analytics service implementation for iOS and android

This commit is contained in:
Kyle Spearrin
2016-08-03 21:25:01 -04:00
parent b5dfe2d336
commit 41deae60f5
9 changed files with 3431 additions and 2926 deletions

View File

@@ -0,0 +1,74 @@
using System;
using Bit.App.Abstractions;
using Android.Gms.Analytics;
using Android.Content;
namespace Bit.Android.Services
{
public class GoogleAnalyticsService : IGoogleAnalyticsService
{
private const string UserId = "&uid";
private readonly IAuthService _authService;
private readonly Tracker _tracker;
public GoogleAnalyticsService(
Context appContext,
IAppIdService appIdService,
IAuthService authService)
{
_authService = authService;
var instance = GoogleAnalytics.GetInstance(appContext.ApplicationContext);
instance.SetLocalDispatchPeriod(10);
_tracker = instance.NewTracker("UA-81915606-2");
_tracker.EnableExceptionReporting(true);
_tracker.EnableAdvertisingIdCollection(true);
_tracker.EnableAutoActivityTracking(true);
_tracker.SetClientId(appIdService.AppId);
}
public bool SetUserId { get; set; } = true;
public void TrackEvent(string category, string eventName)
{
var builder = new HitBuilders.EventBuilder();
builder.SetCategory(category);
builder.SetAction(eventName);
builder.SetLabel("AppEvent");
if(SetUserId)
{
_tracker.Set(UserId, _authService.UserId);
SetUserId = false;
}
_tracker.Send(builder.Build());
}
public void TrackException(string message, bool fatal)
{
var builder = new HitBuilders.ExceptionBuilder();
builder.SetDescription(message);
builder.SetFatal(fatal);
if(SetUserId)
{
_tracker.Set(UserId, _authService.UserId);
SetUserId = false;
}
_tracker.Send(builder.Build());
}
public void TrackPage(string pageName)
{
if(SetUserId)
{
_tracker.Set(UserId, _authService.UserId);
SetUserId = false;
}
_tracker.SetScreenName(pageName);
_tracker.Send(new HitBuilders.ScreenViewBuilder().Build());
}
}
}