You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This ticket defines some aspects of recording a mobile app and supporting data/context to send to Sentry:
It serves to track what parameters we will need and to align between iOS and Android.
Recording parameters and Options
These parameters/options might not be public, but we'll use these to control or adjust video quality, size and recording overhead.
Let's not put this into SentryOptions directly, but create a new nested object SessionReplayOptions which contains all of these params. SentryOptions then holds a ref to this nested object (sentryOptions.setSessionReplayOptions(replayOptions)).
sessionReplay.errorSampleRate: float - If the entire session is not sampled, use the sample rate to sample sessions when an error occurs.
quality: high|medium|low - for later, predefined quality options that change bitrate, resolution, maybe mimeType under the hood
Masking:
We'll redact all text input controls, WebView, labels, images (except when loaded from the bundle), custom controls by default.
Provide a way to pause/resume recording for certain screens (E.g. a PIN-code screen we cannot really redact properly). It should probably be a top-level API of the static class (Sentry.resumeSessionReplay/Sentry.pauseSessionReplay)
Let's bring this up with frontend/backend, because there will be gaps between replay segments. Maybe we could add new RREvent types or breadcrumbs indicating the replay was paused/resumed to surface this in the frontend.
Provide a way to redact views based on their class name. We should do that on SDK init - register a list of classes that you know are sensitive from the beginning. sessionReplayOptions.addClassForMasking(), name TBD
Provide a way to redact specific view instances. Via an extension property/function on iOS and Kotlin Android, e.g. sampleView.sentryBlock = true|false
On Android we could also use view.setTag("sentry-block|unblock").
In case of Java, extension property wouldn't work so we probably need to call to Sentry static class, maybe let's not do it in the first version
Internal/Private Recording options:
frameRate: float: Screenshot every N seconds, default is 1, 0.5 is a valid option
bitRate: int: The quality of the 'video', defaults to 20.
mimeType: enum: h264 - let's always hardcode it to h264
height: Used on Android. The height of the video. Width adjusts proportionally. Default 720. This might depend on device it runs.
scaling: Used on iOS and Android. Default 1x that means,for an iPhone 15 Pro, the video is 320x840
The text was updated successfully, but these errors were encountered:
This ticket defines some aspects of recording a mobile app and supporting data/context to send to Sentry:
It serves to track what parameters we will need and to align between iOS and Android.
Recording parameters and Options
These parameters/options might not be public, but we'll use these to control or adjust video quality, size and recording overhead.
Let's not put this into SentryOptions directly, but create a new nested object SessionReplayOptions which contains all of these params. SentryOptions then holds a ref to this nested object (sentryOptions.setSessionReplayOptions(replayOptions)).
Public options:
sessionReplay.sessionSampleRate: float
- sample ratesessionReplay.errorSampleRate: float
- If the entire session is not sampled, use the sample rate to sample sessions when an error occurs.quality: high|medium|low
- for later, predefined quality options that change bitrate, resolution, maybe mimeType under the hoodMasking:
We'll redact all text input controls, WebView, labels, images (except when loaded from the bundle), custom controls by default.
Sentry.resumeSessionReplay/Sentry.pauseSessionReplay
)sessionReplayOptions.addClassForMasking()
, name TBDsampleView.sentryBlock = true|false
view.setTag("sentry-block|unblock")
.Internal/Private Recording options:
frameRate: float
: Screenshot every N seconds, default is1
,0.5
is a valid optionbitRate: int
: The quality of the 'video', defaults to20
.- let's always hardcode it to h264mimeType: enum
: h264height
: Used on Android. The height of the video. Width adjusts proportionally. Default720
. This might depend on device it runs.scaling
: Used on iOS and Android. Default 1x that means,for an iPhone 15 Pro, the video is 320x840The text was updated successfully, but these errors were encountered: