Preferences & State

Preferences

The Preferences object provides settings that are preferred by the user. These preferences can differ from the settings the SDK uses when recording.

Smartlook.instance.preferences

State

The State object provides settings that are currently used by the SDK. The state of every SDK setting is based on:

  • Default SDK settings.
  • Settings retrieved from the backend.
  • Preferences specified through the API .
Smartlook.instance.state

Status

Because status is read-only, you can only get it using state. It can be used to check if the SDK is currently recording. It can also provide additional information about why the SDK is not recording.

// returns type RecordingStatus = "Recording" | "NotStarted" | "Stopped" | "BellowMinSdkVersion" | "ProjectLimitReached" | "StorageLimitReached" | "InternalError" | "NotRunningInSwiftUIContext" | "UnsupportedPlatform"
const recordingStatus = await Smartlook.instange.state.getRecordingStatus();

If the SDK is recording, you get SmartlookRecordingStatus.Recording. If the SDK is not recording, you get one of the possible causes:

StatusPossible Cause
SmartlookRecordingStatus.NotStartedThe recording has not started yet.
SmartlookRecordingStatus.StoppedThe recording was stopped using stop().
SmartlookRecordingStatus.BellowMinSdkVersionThe SDK is installed on an unsupported Android SDK version.
SmartlookRecordingStatus.ProjectLimitReachedThe project limit of recorded sessions has been reached.
SmartlookRecordingStatus.StorageLimitReachedThe SDK cannot record because it would violate storage limits.
SmartlookRecordingStatus.InternalErrorThe SDK stopped recording due to an internal error.
SmartlookRecordingStatus.NotRunningInSwiftUIContextThe SDK is not properly integrated with SwiftUI.
SmartlookRecordingStatus.UnsupportedPlatformThe SDK is installed on an unsupported iOS version.

Default value

The default status is SmartlookRecordingStatus.NotStarted.

Project key

A unique project key is needed for the SDK to upload and process recordings.

Set the project key

Smartlook.instance.preferences.setProjectKey(
  'your-unique-project-key'
);

📘

Unique project key

You can find your project key in the mobile project settings on the Smartlook dashboard.

Read the project key

const projectKey = await Smartlook.instance.state.getProjectKey();

Default value

The project key is not defined by default (set to null).

Frame rate

Set the preferred frame rate recorded by the SDK. Only settings between 2 and 10 frames per second are allowed.

🚧

Frame rate set through API

If you set a frame rate between 2 and 10 frames per second using the API, any settings that are set from the dashboard are ignored.

Set the frame rate

Smartlook.instance.preferences.setFrameRate(2);

Read the frame rate

const frameRate = await Smartlook.instance.preferences.getFrameRate();

Default value

The default frame rate used by the SDK is 2 frames per second.

Rendering modes

The SDK can use different methods of capturing screen image data. These are called rendering modes. For more information, see Rendering modes.

Surface recording

By default, recording of SurfaceView and TextureView on Android is not enabled. You can enable it using surfaceRecordingEnabled.

Set surface recording

Smartlook.instance.preferences.setSurfaceCaptureEnabled(true);

Read surface recording

const isSurfaceRecordingEnabled = await Smartlook.instance.state.getSurfaceCaptureEnabled();

Default value

By default, surfaces are not recorded, thus the default value is set to false.

Adaptive frame rate

To lower requirements on the CPU, storage space, and network bandwidth, the SDK captures the screen only when there is something drawn in the application. This detection works well in typical native applications, but might be problematic when Surface, TextureView on Android, or similar is used. Thus adaptive frame rate can be disabled.

Set adaptive frame rate

Smartlook.instance.preferences.setAdaptiveFrameRateEnabled(false);

📘

Adaptive frame rate

Due to reported issues with video responsiveness on iOS, we recommend turning off the Adaptive Frame Rate feature, e.g. Smartlook.instance.preferences.setAdaptiveFrameRateEnabled(false);.

Read adaptive frame rate

const isAdaptiveFrameRateEnabled = await Smartlook.instance.preferences.getAdaptiveFrameRateEnabled();

Default value

By default, adaptive frame rate is enabled, thus the default value is true.

Event tracking

Tracking of some automatically tracked events can be enabled or disabled using Event Tracking API.

All automatically detected events

Smartlook.instance.preferences.eventTrackingEnableAll();
Smartlook.instance.preferences.eventTrackingDisableAll();

Navigation events

All automatically detected navigation events can be enabled or disabled. Or, Activity and Fragment detection can be enabled or disabled separately on Android.

// Android only properties
Smartlook.instance.preferences.eventTrackingNavigationEnableAll();
Smartlook.instance.preferences.eventTrackingNavigationDisableAll();
Smartlook.instance.preferences.setEventTrackingNavigationActivityStatus(true|false);
Smartlook.instance.preferences.setEventTrackingNavigationFragmentStatus(true|false);

📘

Android's Fragment navigation event detection is disabled by default.

User interaction events

All automatically detected user interaction events can be enabled or disabled. Or, "rage click" and "touch" event detection can be enabled and disabled separately.


Smartlook.instance.preferences.setEventTrackingInteractionUserStatus(true|false);
Smartlook.instance.preferences.setEventTrackingInteractionRageClickStatus(true|false);

// Android only properties
Smartlook.instance.preferences.setEventTrackingInteractionEnableAll();
Smartlook.instance.preferences.setEventTrackingInteractionDisableAll();

Default value

By default , all automatically detected events are tracked, except Fragmentnavigation events on Android.
The default can be restored using the following:

Smartlook.instance.preferences.restoreDefault();