Privacy

All system text boxes that are marked as secure are hidden from the recorded video automatically. In addition we support a way to mark your custom sensitive views so they will be treated similarly.

Protected view

Marking view as protected in code

You can protect any view that you want by importing BugseePlugin namespace and implement the following code:

    // This is required to make extension methods work.
    using BugseePlugin;

    // ...

    this.myView.SetBugseeProtected(true);

Protected web page elements

You can also prevent any web page element, shown in WebView, from being recorded by adding class="bugsee-hide" to it.

    <input type="text" class="bugsee-hide">

Elements with type="password" are not recorded by default. If you want such web page element to be recorded, add class="bugsee-show" to it.

    <input type="password" class="bugsee-show">

In Android app if you use WebView.setWebViewClient() method, it is necessary to call SetBugseeProtected() extension method in order to prevent recording protected web page elements in this WebView.

    // This is required to make extension methods work.
    using BugseePlugin;

    // ...

    webView.SetWebViewClient(new WebViewClient()); 
    webView.SetBugseeProtected();

Going dark

In some rare cases you might want to conceal the whole screen and stop recording events completely. The following API's will come in handy, no data is being gathered between the calls to pause and resume. Note, that on Android only screen capture and touches gathering are disabled in paused state, whereas other events are still recorded.

    // To stop video recording use
    Bugsee.Pause();

    // And to continue
    Bugsee.Resume();

Network traffic

Bugsee captures network activity from the application and stores headers and in some cases body of the request and response. In order to allow you to hide user identifiable and other sensetive data from these network logs, we provide you with the ability to set your own filter via a callback we will call for every event about to be recorded.

For every event to be recorded, Bugsee will call your method and provide you with BugseeNetworkEvent object. It is your method's responsibility to clean up all user identifiable data from that structure and call provided handler() to pass it back to Bugsee.

Providing handler

You should pass a callback method (either as delegate or anonymous function) of BugseeNetworkEventFilterHandler to Bugsee.SetNetworkEventFilter().

    var rgx = new System.Text.RegularExpressions.Regex("token=[^&]+", RegexOptions.IgnoreCase);

    Bugsee.SetNetworkEventFilter(delegate (IBugseeNetworkEvent netEvent, BugseeNetworkEventFilterDecisionHandler handler)
    {
        netEvent.Url = rgx.Replace(netEvent.Url, "<redacted>");

        handler.Invoke(netEvent);
    });

    // To stop using provided filter callback, just pass null
    Bugsee.SetNetworkEventFilter(null);

Network Events

The callback is going to be called several times for each network request, depending on its lifecycle. Usually for successful requests its going to be called twice, once with the request event (request headers and body) and one more time after completion and will contain headers and body of the response. Note that callback can be called more times, initally without body and then with it for both request and response.

Property Description Type Read only Notes
Body Body Object No Raw body of the request or response where available.
BugseeNetworkEventType Type of network event BugseeNetworkEventType No Can be one of Before, Complete, Error, Cancel
Error HTTP error information IDictionary No
Headers HTTP Headers IDictionary No
Method HTTP Request Method String No 'GET', 'POST', etc...
NoBodyReason Reason why body was not captured Enum No Can be one of None, SizeTooLarge, UnsupportedContentType, NoContentType, CantReadData
RedirectedFromURL URL of Network event that we were redirected from String No
ResponseCode HTTP response code Int32 No 200, 304, 404, etc
Url Network event URL String No