Integrating with Xamarin

Xamarin error handling for the .NET SDK

Rollbar offers error monitoring integration for Xamarin applications through the .NET SDK. This guide will show you how to integrate Rollbar in your Xamarin app.

For a more in-depth tutorial on using a Xamarin app with Rollbar, including a working sample, please read our blog article Monitoring Errors in Xamarin Apps.

Quick Start

Step 1. Log into your Rollbar account dashboard

Step 2. Create your project and select .NET from the list of SDKs. Save the server side access token that is generated for you. You’ll need this to configure Rollbar in the steps below.

1366

Alternatively, to install from the console, run the command below:

Install-Package Rollbar

Step 3. We've designed RollbarHelper.cs to make it easier to wire up Xamarin apps. Copy the file and add it under {root}/{appname}.Xamarin.Forms. Next, find the ConfigureRollbarSingleton() method in RollbarHelper and update it with the access token you received in step 2.

public static void ConfigureRollbarSingleton()
{
  const string rollbarAccessToken = "POST-SERVER-ACCESS-TOKEN";
  const string rollbarEnvironment = "production";
  // minimally required Rollbar configuration
  var config = new RollbarConfig(rollbarAccessToken) {
    Environment = rollbarEnvironment,
      ScrubFields = new string[]
      {
        "access_token",
        "Username",
      }
  };
  // minimally required Rollbar configuration:
  RollbarLocator.RollbarInstance.Configure(config);
}

Step 4. You may optionally add platform-specific exception handling to get greater detail. For Android, find MainActivity in the Android codebase and add the code snippet below in the OnCreate() method.

protected override void OnCreate(Bundle bundle)
{
  // Rollbar notifier configuartion
  RollbarHelper.ConfigureRollbarSingleton();

  // Registers for global exception handling.
  RollbarHelper.RegisterForGlobalExceptionHandling();

  AndroidEnvironment.UnhandledExceptionRaiser += (sender, args) =>
  {
    var newExc = new ApplicationException("AndroidEnvironment_UnhandledExceptionRaiser", args.Exception);
    RollbarLocator.RollbarInstance.AsBlockingLogger(TimeSpan.FromSeconds(10)).Critical(newExc);
  };

  TabLayoutResource = Resource.Layout.Tabbar;
  ToolbarResource = Resource.Layout.Toolbar;
  base.OnCreate(bundle);
  global::Xamarin.Forms.Forms.Init(this, bundle);
  LoadApplication(new App());
}

For iOS, you can add code like this in your AppDelegate.cs.

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
  // Rollbar notifier configuartion
  RollbarHelper.ConfigureRollbarSingleton();

  // Registers for global exception handling.
  RollbarHelper.RegisterForGlobalExceptionHandling();

  // Rest of your code
  global::Xamarin.Forms.Forms.Init();
  LoadApplication(new App());
  return base.FinishedLaunching(app, options);
}

Usage

In the Quick start section, we configured Rollbar to capture all unhandled exceptions. Additionally, we have several methods to log items manually or add extra metadata.

Manual reporting

If you wish to report an error to Rollbar with a specific exception block, you may do so using the Rollbar error reporting methods. For example:

try {
  string value = null;
  if (value.Length == 0) { // <-- Causes exception
    Console.WriteLine(value);
  }
} catch (Exception e1) {
  RollbarLocator.RollbarInstance.Error(new ApplicationException("Handled Exception inside...", e1));
}

Logging a Specific Message

You can log your own messages anywhere in your app. For example, to log a debug message:

RollbarLocator.RollbarInstance.Debug("Here is some debug message");

Adding Context Information

You can provide your own logic for retrieving user data with the person configuration option. For example;

Person person = new Person("007");
person.Email = "[email protected]";
person.UserName = "JBOND";
RollbarLocator.RollbarInstance.Config.Person = person;

Configuration

Setting up a post_server_item access token should be enough for basic configuration

const string rollbarAccessToken = "POST-SERVER-ACCESS-TOKEN";
const string rollbarEnvironment = "production";
var config = new RollbarConfig(rollbarAccessToken) // minimally required Rollbar configuration
{
  Environment = rollbarEnvironment,
};
RollbarLocator.RollbarInstance.Configure(config);

Help/Support

If you run into any issues, please email us at [email protected]
You can also find us in IRC: #rollbar on chat.freenode.net
For bug reports, please open an issue on Github