Configuration

Launching with options

iOS/iPadOS: Make sure you launch your app with Bugsee on a real device. Underlying Bugsee iOS SDK does not work in simulator as it heavily depends on the hardware.

Bugsee behavior is very customizable, if default configuration is not satisfying your needs you can launch the SDK with additional parameters. Use instance of IOSLaunchOptions or AndroidLaunchOptions for corresponding platform to change Bugsee behavior.

!iOS

using System.Collections.Generic;

namespace YourNameSpace
{
  [Register("AppDelegate")]
  public class AppDelegate : MauiUIApplicationDelegate
  {
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
      var bugseeOptions = new BugseePlugin.IOSLaunchOptions();

      bugseeOptions.ShakeToReport = true;
      bugseeOptions.ReportPrioritySelector = true;
      bugseeOptions.DefaultBugPriority = BugseeSeverityLevel.Critical;

      BugseePlugin.Bugsee.Launch("<your_app_token>", bugseeOptions);

      return base.FinishedLaunching(application, launchOptions);
    }
  }
}

!Android

using System.Collections.Generic;

namespace YourNameSpace
{
  [Application]
  public class MainApplication : MauiApplication
  {
    public MainApplication(IntPtr handle, JniHandleOwnership ownership)
      : base(handle, ownership)
    {
    }

    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();

    public override void OnCreate()
    {
      base.OnCreate();

      var bugseeOptions = new BugseePlugin.AndroidLaunchOptions();

      bugseeOptions.ShakeToTrigger = true;
      bugseeOptions.NotificationBarTrigger = false;

      BugseePlugin.Bugsee.Launch(this, "<your token>", bugseeOptions);
    }
  }
}

Available Options

For iOS

Key Default Notes
CaptureDeviceAndNetworkNames true Capture device name, wifi SSID and mobile carrier name.
CaptureLogs true Automatically capture all console logs
CaptureAVPlayer false When enabled, video playing via AVPlayerLayer and via AVPlayerViewController will be captured on video. This also may include video streams from camera.
CaptureOSLogs false Controls whether OSLog messages are captured. Disabled by default. Note that OSLog capturing incurs a performance slight penalty, thus, please measure the impact for your specific use case
CrashReport true Catch and report application crashes (*)
DefaultBugPriority VeryLow Default priority for bugs
DefaultCrashPriority Blocker Default priority for crashes
DetectAppExit false Detect any kind of process termination (e.g. when user swipes off the application from multitasking UI, or when system unloads the app due memory pressure). Special error report is generated for this scenario with "BugseeAppExit" domain
FrameRate High Specifies how often frames are captured
KillDetection false Detect abnormal termination (experimental, read more)
MaxDataSize 50 Bugsee will avoid using more disk space than specified (in MB). If total Bugsee data size exceeds specified value, oldest recordings (even not sent) will be removed. Value should not be smaller than 10
MaxNetworkBodySize 5120 The limit above which network requests bodies will not be captured. Specified in bytes.
MaxRecordingTime 60 Maximum recording duration
MonitorNetwork true Capture network traffic
MonitorBluetoothStatus false Monitor bluetooth state.
IMPORTANT: You must add "Privacy - Bluetooth Always Usage Description" key into your Info.plist with a string value explaining to the user why you need bluetooth permission
MonitorDiskSpace false
ReportDescriptionRequired false Controls whether "Description" field in bug reporting UI is mandatory or not.
ReportEmailRequired false Controls whether "Email" field in bug reporting UI is mandatory or not
ReportPrioritySelector false Allow user to modify priority when reporting manual
ReportSummaryRequired false Controls whether "Summary" field in bug reporting UI is mandatory or not
ScreenshotEnabled true Attach screenshot to a report
ScreenshotToReport true Screenshot key to trigger report
ShakeToReport false Shake gesture to trigger report
Style Default Enumeration of Default, Dark and BasedOnStatusBar
VideoEnabled true Enable video recording
ViewHierarchyEnabled true Capture view hierarchy for bug and error reports
WifiOnlyUpload false Upload reports only when a device is connected to a WiFi network
* iOS allows only one crash detector to be active at a time, if you insist on using an alternative solution for handling crashes, you might want to use this option and disable Bugsee from taking over.

For Android

Key Default Notes
CaptureDeviceAndNetworkNames true Capture device name, wifi SSID and mobile carrier name.
CaptureLogs true Automatically capture all console logs
CrashReport true Catch and report application crashes
DefaultBugPriority VeryLow Default priority for bugs
DefaultCrashPriority Blocker Default priority for crashes
DetectAppExit false Detect any kind of process termination (e.g. when user swipes off the application from multitasking UI, or when system unloads the app due memory pressure). Special error report is generated for this scenario with "BugseeAppExit" domain
FrameRate BugseeFrameRate.High Specifies how often frames are captured
ExtendedVideoMode false Enables or disables the use of MediaProjection API (**)
LogLevel Verbose Minimal log level of Logcat messages, which will be attached to report
MaxDataSize 50 Maximum disk space consumed by Bugsee
MaxNetworkBodySize 5120 The limit above which network requests bodies will not be captured. Specified in bytes.
MaxRecordingTime 60 Maximum recording duration
MonitorNetwork true Capture network traffic
ReportDescriptionRequired false Controls whether "Description" field in bug reporting UI is mandatory or not.
ReportEmailRequired false Controls whether "Email" field in bug reporting UI is mandatory or not
ReportPrioritySelector false Allow user to modify priority when reporting manual
ReportSummaryRequired false Controls whether "Summary" field in bug reporting UI is mandatory or not
NotificationBarTrigger true Trigger report from notification bar
ScreenshotEnabled true Attach screenshot to a report
ServiceMode false Used, when Bugsee is launched from service. No video and no visual controls available. Recording continues even in background.
ShakeToReport false Shake gesture to trigger report
VideoEnabled true Enable video recording
ViewHierarchyEnabled true Capture view hierarchy for bug and error reports
WifiOnlyUpload false Upload reports only when a device is connected to a WiFi network
** If ExtendedVideoMode is set to true, MediaProjection API is used, while recording video. In this case all types of views are recorded, but user is asked to allow video recording. If false (experimental), view drawing cache is used to capture the screen. In this case user is not asked to allow video recording, but frame rate is lower and some special views like status bar, soft keyboard and views, which contain Surface (MapView, VideoView, GlSurfaceView, etc.) are not recorded. Option has no effect, if VideoEnabled option is set to false.

Stop, Relaunch

It is also possible to relaunch Bugsee with other options later

!iOS

// Relaunch with other options.
var options = new BugseePlugin.IOSLaunchOptions();

// Set other launch options
//...

BugseePlugin.Bugsee.Relaunch(options);

!Android

// Relaunch with other options.
var options = new BugseePlugin.AndroidLaunchOptions();

// Set other launch options
//...

BugseePlugin.Bugsee.Relaunch(options);

or stop the events and video recording.

// Stop recording completely
BugseePlugin.Bugsee.Stop()

Handling UnobservedTaskExceptions

Starting with version 4.5 of .NET Framework, exceptions thrown within the Tasks are not causing app to crash any more. Instead, they are rerouted to UnobservedTaskExceptions event handlers. By default, we do not capture them to reduce noise. If, however, you need them to be captured, enable that feature by setting the following option (same for all the platforms):

BugseePlugin.Bugsee.HandleTaskExceptions = true;

NOTE: This option is enabled by default.