Configuration

Launching with options

Make sure you launch your app with Bugsee on a real device. 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 passed as a dictionary.

!Objective-C

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ...other initialization code

    NSDictionary * options = @{
           BugseeMaxRecordingTimeKey   : @60,  
           BugseeShakeToReportKey      : BugseeFalse,
           BugseeScreenshotToReportKey : BugseeTrue,
           BugseeCrashReportKey        : BugseeTrue
    };

    [Bugsee launchWithToken:@"<your_app_token>" andOptions:options];

    return YES;
}

!Swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // ...other initialization code

    let options : [String: Any] =
        [ BugseeMaxRecordingTimeKey   : 60,
          BugseeShakeToReportKey      : false,
          BugseeScreenshotToReportKey : true,
          BugseeCrashReportKey        : true ]

    Bugsee.launch(token: "<your_app_token>", options: options)

    return true
}

Stopping

Stopping will fully stop the SDK operation and clean up all the used resources. The operation may take a while to complete.

!Objective-C

  [Bugsee stop:^(void) {
    // operations to perform upon completion  
    }];

!Swift

  Bugsee.stop {
    // operations to perform upon completion
  }

Relaunching

Relaunching will fully stop the SDK operation and clean up all the used resources. Upon completion it will start recording again with new options.

!Objective-C

[Bugsee relaunchWithDictionaryOptions:options];

!Swift

Bugsee.relaunch(options: options)

Available Options

Key Default value Notes
BugseeMaxRecordingTimeKey @60 Maximum recording duration
BugseeShakeToReportKey NO Shake gesture to trigger report.
Be aware, that enabling this option may cause a startup delay/freeze on iOS 12 due to the bug in the CoreMotion system framework (read more)
BugseeScreenshotToReportKey YES Screenshot key to trigger report
BugseeCrashReportKey YES Catch and report application crashes (*)
BugseeKillDetectionKey NO Detect abnormal termination (read more)
BugseeVideoEnabledKey YES Enable video recording
BugseeScreenshotEnabledKey YES Attach screenshot to a report. Note, that if BugseeVideoEnabledKey option is NO, default value of this option is NO too.
BugseeViewHierarchyEnabledKey YES Capture view hierarchy for Bug reports
BugseeCaptureLogsKey YES Automatically capture all console logs
BugseeCaptureOSLogsKey NO Automatically capture OSLog and Logger print statements.
IMPORTANT: Experimental feature
BugseeMonitorNetworkKey YES Capture network traffic
BugseeMonitorBluetoothStatusKey NO 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
BugseeReportPrioritySelectorKey NO Allow user to modify priority when reporting manual
BugseeDefaultCrashPriorityKey BugseeSeverityBlocker Default priority for crashes
BugseeDefaultBugPriorityKey BugseeSeverityLow Default priority for bugs
BugseeWifiOnlyUploadKey NO Upload reports only when a device is connected to a Wi-Fi network.
BugseeMaxDataSizeKey @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.
BugseeStyleKey Default Enumeration of BugseeStyleSystemDefault, BugseeStyleDefault, BugseeStyleDark and BugseeStyleBasedOnStatusBarStyle
BugseeFrameRateKey BugseeFrameRateHigh Specifies how often frames are attempted to be captured
BugseeVideoScaleKey @1 Additional down scaling applied to recorded video, (e.x @0.5 would reduce both width and height by half)
CaptureDeviceAndNetworkNames** NO Capture device name, wifi SSID and mobile carrier name.
ReportSummaryRequiredKey NO Controls whether "Summary" field in bug reporting UI is mandatory or not.
ReportDescriptionRequiredKey NO Controls whether "Description" field in bug reporting UI is mandatory or not.
ReportEmailRequiredKey NO Controls whether "Email" field in bug reporting UI is mandatory or not.
BugseeAppLaunchCrashDetectionKey NO Controls whether early crashes are intercepted and uploaded. Early crashes are those happening within first 5 seconds after app launch. And they are uploaded synchronously (with blocking main thread) to guarantee upload
BugseeCaptureAVPlayerKey NO When enabled, video playing via AVPlayerLayer and via AVPlayerViewController will be captured on video

Built-in reporting UI adjustments

Alongside stylistic changes, you can also change the placeholders' texts shown in input controls within the built-in bug reporting UI

!Objective-C

  [[Bugsee appearance] setReportSummaryPlaceholder:@"What's happened? Only briefly"];
  [[Bugsee appearance] setReportDescriptionPlaceholder:@"Here, describe all the pains and frustrations you had. In details"];
  [[Bugsee appearance] setReportEmailPlaceholder:@"Identify yourself here"];
  [[Bugsee appearance] setReportLabelsPlaceholder:@"Labels.For.Developers. [Comma separated]"];

!Swift

  Bugsee.appearance().reportSummaryPlaceholder = "What's happened? Only briefly"
  Bugsee.appearance().reportDescriptionPlaceholder = "Here, describe all the pains and frustrations you had. In details"
  Bugsee.appearance().reportEmailPlaceholder = "Identify yourself here"
  Bugsee.appearance().reportLabelsPlaceholder = "Labels.For.Developers. [Comma separated]"

 


* 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.
** To obtain WiFi information, the requesting app must meet one of the following requirements (for full details please refer to Apple documentation):
  • The app uses Core Location, and has the user’s authorization to use location information.
  • The app uses the NEHotspotConfiguration API to configure the current Wi-Fi network.
  • The app has active VPN configurations installed.
  • The app has an active NEDNSSettingsManager configuration installed.
Note, that requesting location access requires a change to your apps Info.plist file. Two keys must be added with appropriate description:
  • Privacy - Location Always and When In Use Usage Description
  • Privacy - Location When In Use Usage Description
Note: An app linked against iOS 12 or later must enable the Access WiFi Information capability in Xcode.