Identifying users with HockeyApp

|
I use HockeyApp for crashes and App analytics. Most of the time users that are logged into the App have different accounts than what they use with HockeyApp, so most of the time I can't use the LoginManager.

Instead, to Identify users I do the following instead.

Android

Create an implementation of CrashManagerListener, which overrides UserID, Contact and Description.
public class MyCrashManagerListener : HockeyApp.Android.CrashManagerListener
{
public override string UserID
{
get
{
try
{
var settings = Mvx.Resolve<ISettings>();
var userId = settings.GetValue("userId", Guid.Empty);
return userId.ToString();
}
catch { /* ignore */ }
return Guid.Empty.ToString();
}
}
public override string Contact
{
get
{
try
{
var settings = Mvx.Resolve<ISettings>();
var userId = settings.GetValue("email", "derp@herp.durr");
return userId;
}
catch { /* ignore */ }
return "derp@herp.durr";
}
}
public override string Description
{
get
{
try
{
var settings = Mvx.Resolve<ISettings>();
var userId = settings.GetValue("displayname", "LoggedOut");
return userId;
}
catch { /* ignore */ }
return "LoggedOut";
}
}
}
Then use it as follows when registering the CrashManager
CrashManager.Register(this, "your hockey app id", new MyCrashManagerListener());
view raw AndroidUsage.cs hosted with ❤ by GitHub

iOS

On iOS you need to implement BITHockeyManagerDelegate where you need to override UserIdForHockeyManager(), UserNameForHockeyManager() and UserEmailForHockeyManager().
public class HockeyAppDelegate : BITHockeyManagerDelegate
{
public override string UserIdForHockeyManager(BITHockeyManager hockeyManager,
BITHockeyBaseManager componentManager)
{
try
{
var settings = Mvx.Resolve<ISettings>();
var userId = settings.GetValue("userId", Guid.Empty);
return userId.ToString();
}
catch { /* ignore */ }
return Guid.Empty.ToString();
}
public override string UserNameForHockeyManager(BITHockeyManager hockeyManager,
BITHockeyBaseManager componentManager)
{
try
{
var settings = Mvx.Resolve<ISettings>();
var userId = settings.GetValue("displayname", "LoggedOut");
return userId;
}
catch { /* ignore */ }
return "LoggedOut";
}
public override string UserEmailForHockeyManager(BITHockeyManager hockeyManager,
BITHockeyBaseManager componentManager)
{
try
{
var settings = Mvx.Resolve<ISettings>();
var userId = settings.GetValue("email", "derp@herp.durr");
return userId;
}
catch { /* ignore */ }
return "derp@herp.durr";
}
}
Then right before starting the SharedHockeyManager you need to register your Delegate.
var manager = BITHockeyManager.SharedHockeyManager;
manager.Configure("your hockey app id");
manager.Delegate = new HockeyAppDelegate();
manager.StartManager();
view raw iOSUsage.cs hosted with ❤ by GitHub
Now the User and Contact columns in a crash report on HockeyApp should be filled out with the values you provided.