Configuration
Launching with options
iOS/iPadOS: Since v6.0.0 the underlying Bugsee iOS SDK supports the simulator; crash capture is excluded. For full functionality, launch your app with Bugsee on a real device.
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
- Android
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);
}
}
}
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 | High | 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 | High | 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
- Android
// Relaunch with other options.
var options = new BugseePlugin.IOSLaunchOptions();
// Set other launch options
//...
BugseePlugin.Bugsee.Relaunch(options);
// 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.