Configuration file for the iOS SDK library

EOCoreBasicConfig.plist

Log level settings

The log level settings configure base logging settings.

Item ID
Description
Values

LoggingLevel

The current logging level, applies only when log level is not indicated in the log statement.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3

Local cache file settings

These settings configure use of the device's local cache.

Item ID
Description
Values

HasToPersistLocalCache

If yes, data is stored in local storage on the device, instead of in memory. The CachingLevel must also be configured.

yes/no


CachingLevel


The current caching level. Applies only when HasToPersistLocalCache is true.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3

Post settings

These settings control the logging level, URL, volume, and frequency of posts to the target page.

Item ID
Description
Values

PostMessageLevelWiFi

The logging level of events to be sent to the server over Wi-Fi when network performance is good.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


PostMessageLevelCellular


The logging level of events to be sent to the server over the cellular (3G) network.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


ManualPostEnabled


If yes, the framework sends data to the server only when your application calls requestManualServerPost.
If set to no, you must configure the following settings.
Note: You cannot enable this setting and DoPostOnIntervals together. However, one of these options must be yes. By default, it is set to no to allow automatic posting.


yes/no


DoPostOnIntervals


If yes, the framework sends data to the server at regular time intervals that are specified by PostMessageTimeIntervals when the application is in the foreground. This value must be set to yes if ManualPostEnabled=false.
Note: You cannot enable this setting and ManualPostEnabled together. However, one of these options must be yes.


yes/no


PostMessageTimeIntervals


How often the framework sends data to the server when DoPostOnIntervals is set to yes.


Seconds


DoPostAppComesFromBackground


If yes, the iOS SDK sends data to the server when the application comes from the background.


yes/no


DoPostAppGoesToBackground


If yes, the iOS SDK sends data to the server when the application goes to the background.


yes/no


DoPostAppGoesToClose


If yes, the iOS SDK sends data to the server when the application closes.


yes/no


DoPostAppIsLaunched


If yes, the iOS SDK sends data to the server when the application starts.


yes/no


DoPostOnScreenChange


If yes, the iOS SDK sends data when the screen changes, subject to ScreenTimeNeededToPost.


yes/no


DynamicConfigurationEnabled


To use the killswitch, DynamicConfigurationEnabled must be set to yes to enable the killswitch.
To use the iOS SDK libraries:

  • If DynamicConfigurationEnabled==yes, you need to call enableTealeafFramework.
  • If you do not have the killswitch implemented, you need to have DynamicConfigurationEnabled==no for libraries to load.

yes/no

EOCoreAdvancedConfig.json

Internal settings: DO NOT CHANGE

Do not change these settings unless directed to do so by Acoustic Tealeaf.

Item ID
Description
Values

CachedFileMaxBytesSize

Maximum number of bytes to be stored on device. The larger value between CachedFileMaxBytesSize or PostMessageMaxBytesSize is used to queue data. If too small, data could be truncated or deleted odd queue.

Bytes


PostMessageMaxBytesSize


Maximum number of bytes to be stored on device. The larger value between CachedFileMaxBytesSize or PostMessageMaxBytesSize is used to queue data. If too small, data could be truncated or deleted odd queue.


Bytes


PostMessageTimeout


The timeout for the framework's posts to the server. While the framework does not receive a server response within this time frame, the framework keeps trying to send data.


Seconds


CompressPostMessage


When set to tue, HTTP POSTs submitted from the framework are compressed in compress format.
Note: To extract the compressed POSTs, some additional server-side configuration can be required.


true/false


TurnOffCorrectOrientationUpdates


Used to turn the orientation of the layout.


true/false


DefaultOrientation


Default orientation to be given for the layout.


0, 90, 180, -180


LibraryVersion


Library version of the EOCore library.


String


MessageVersion


Current Tealeaf message version.


String


MaxNumberOfFilesToCache


Indicates the maximum number of files to save to device storage in case Tealeaf SDK is not able to post data to the server. After the specified number of times times, Tealeaf deletes the oldest file and continues until it finds network to post data to the server.
Valid values are 0 and higher. Default value is 5.
This setting is useful for Tealeaf only if HasToPersistLocalCache is set to YES in TLFResources.bundle > TealeafBasicConfig.plist. If HasToPersistLocalCache is set to NO, the value for MaxNumberOfFilesToCache is ignored.


Integer

TealeafBasicConfig.plist

Killswitch settings

These settings control the killswitch and whether to use a white list of a phone that events can be captured.

Item ID
Description
Values

KillSwitchEnabled

If yes, the framework checks the killswitch target page before starting. You must specify the following properties.
If KillSwitchEnabled=no, the framework always starts.

yes/no


KillSwitchUrl


Defines the URL to check for the killswitch. The framework requires a successful response to initialize when KillSwitchEnabled is set to yes.


URL


KillSwitchMaxNumberOfTries


The number of times the framework checks for the killswitch URL before giving up. This value should be set to at least 1.


Integer


KillSwitchTimeInterval


The time to wait before rechecking the killswitch URL if it is not responding.


Seconds


KillSwitchTimeout


The timeout value for the HTTP request that checks for the killswitch.


Seconds


UseWhiteList


If yes and KillSwitchEnabled, the framework requires a phone ID to assign before calling enable to check the white list of phone IDs.
If no and KillSwitchEnabled, the framework defaults to use random sampling.


yes/no


WhiteListParam


Used to send the white list ID corresponding to the phone ID.


Current white list server uses id

Post settings

These settings control the logging level, URL, volume, and frequency of posts to the target page.

Item ID
Description
Values

PostMessageUrl

The URL for posting data to your server.
Note: To enable secure transport between the logging framework and the target page, configure this URL to begin with https://. For more information about the target page, see Getting started with the Acoustic Tealeaf SDK for iOS using Swift. and Getting started with the Acoustic Tealeaf SDK for iOS using Objective C

URL


DoPostOnScreenChange


If true, the SDK posts data when the app transitions from one UIViewController to another. In EOCoreSettings.bundle > EOCoreBasicConfig.plist, you must set DoPostOnIntervals to yes and PostMessageTimeIntervals to a positive value; as they are set to the defaults.


true/false
Default is false


PrintScreen


The logging level of a screen shot to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3has the lowest priority (information).

Integer, 0-3


MaxStringsLength


Maximum string length to be sent to target page per value in log statements. Prevents long strings from taking up storage and bandwidth.
Note: This value must be at least 1.


Integer

Masking settings

These settings control privacy masking.

Item ID
Description
Values

HasMasking

Used to mask values of controls. If HasMasking=yes, then complete MaskIdList.

yes/no


MaskIdList


An array of IDs or regular expressions to match that will be masked.


String


HasCustomMask


Indicates ability to use the following values in the Sensitive dictionary if yes.


yes/no


SensitiveSmallCaseAlphabet


The character to be used by a small case letter.


String


SensitiveCapitalCaseAlphabet


The character to be used by a capital case letter.


String


SensitiveSymbol


The character to be used by a symbol.


String


SensitiveNumber


The character to be used by a number.


String

Cookie settings

These settings control cookies.

Item ID
Description
Values

SessionizationCookieName

The parameter of cookie that is used for sessionization of the application. For example, TLTSID or JSESSIONID.

String

Session timeout setting

This setting controls session timeouts.

Item ID
Description
Values

SessionTimeout

When SessionTimeout is set, the expiration of cookie is the current time plus the session timeout value.

Minutes

Screen shot settings

These settings control screen shots.

Note:

You can store screen shots in memory instead of in the local memory on the device. To enable screen shots to save in memory, you must set HasToPersistLocalCache to no in the local cache file settings.

Item ID
Description
Values

ScreenshotFormat

The format of the screen shot.

PNG/JPG


PercentOfScreenshotsSize


The percentage of screen capture's original pixel dimensions at which posted screen captures are submitted.


Integer, 1-100


PercentToCompressImage


The percentage to compress an image. This setting can only be used for JPG images. PNG images ignore this setting and default to 100.


Integer, 1-100


ScreenShotPixelDensity


Irrespective of the pixel density of a device, when screenshot is taken by Tealeaf SDK, the screenshot is taken at the specified pixel density. If you use 1.5 as the pixel density, captured images are typically between 12 KB to 20 KB, and replay fidelity is good. When pixel density is set higher than 1.5, fidelity is better but file size is larger. When pixel density is set to 1 and lower, images are blurred with smaller file sizes.
Valid values are 0 and higher. Default is 1.5.


Double float

Capture native layout settings

These settings control capture of native layout.

Item ID
Description
Values

LogViewLayoutOnScreenTransition

When set to yes, the screen layout is logged. When set to no, the screen layout is not logged and produces type 10 data.

yes/no


GetImageDataOnScreenLayout


This should be set to yes for prototyping to view base64 data being sent to server to display images correctly during replay. The image data should later be extracted, setup on the server, and switched to no for production of the application to be released.


yes/no

Gesture enabled settings

These settings control capture of native layout.

Item ID
Description
Values

SetGestureDetector

When set to yes, gestures are logged. When set to no, gestures are not logged and produces type 11 data.

yes/no


CaptureNativeGesturesOnWebview


When set to yes, the gestures are logged in a webview. When set to no, the gestures are not logged and produces type 11 data. The default is no, because the gesture data for the webview should come from the UI Capture library that has better information of the webview.


yes/no

Auto-Geolocation settings

These settings control auto-geolocation.

Item ID
Description
Values

LogLocationEnabled

When set to yes, the location is logged. When set to no, the location is not logged and produces type 13 data.

yes/no

Hybrid application setting

This setting controls hybrid application.

Item ID
Description
Values

JavaScriptInjectionDelay

When SessionTimeout is set, the expiration of the cookie is the current time plus the session timeout value.

Milliseconds

Auto-Instrumentation settings

These settings control auto-instrumentation.

Item ID
Description
Values

DisableAutoInstrumentation

This will remove auto-instrumentation for iOS, and you will need to manually instrument the application. This is not recommended.

yes/no

Application key settings

These settings control the application key.

An application key (AppKey) setting is used to identify and sessionize the mobile application with the Tealeaf for SaaS and Acoustic Analytics services. Contact your administrator for the value of the application key for SaaS service.

For on-premise service, you need to know if on-premise is using cookies for sessionization. If cookies are used, you need to provide a cookie name. You can use TLTSID as the cookie name.

Note:

It is recommended that each mobile application is assigned a unique application key. However, application keys can be used with more than one application if the same data is being captured from each application and you want captured data from multiple applications to be grouped as a single entity.

Item ID
Description
Values

AppKey

An application key is used to identify and sessionizethe mobile application with the Tealeaf for SaaS and Acoustic Analytics services.

String

TealeafAdvancedConfig.json

Internal settings: DO NOT CHANGE

Do not change these settings unless directed to do so by Acoustic Tealeaf.

Item ID
Description
Values

DisableAlertAutoCapture

If set true, disables auto-capture of UIAlertController and UIAlertView.
Note: Currently, the SDK captures custom alerts, even when this flag is set to true.

true/false


DisableAlertBackgroundForDisabledLogViewLayout


If set true, disables background capture of the alert when the background ViewController's auto-capture is turned off.


true/false


EnableWebViewInjectionForDisabledAutoCapture


If set to true, captures webview when auto-capture of the project is turned off.


true/false


LibraryVersion


If set to true, only the MessageTypesincluded in the comma-separated list are sent back to the server.
If set false, all message types are sent back to the server.


true/false


FilterMessageTypes


If set to true, only the MessageTypes included in the comma-separated list are sent to back to the server.
If set to false, all message types are sent back to the server.


true/false


MessageTypes


To filter Tealeaf messages, which is needed for MobileFirst.


Integer, 1-16


AddMessageTypeHeader


To add an extra header in post, which is needed for MobileFirst.


true/false


MessageTypeHeader


The key of the header, which is needed for MobileFirst.


String


RemoveIp


Remove ip and ipv6 values from payload.


true/false


IpPlaceholder


What will replace ip and ipv6 if they are removed. N/A is the default value.
If RemoveIp is set to falseand the device has an ipv6 address, the "ipv6" value in the json is set to the address (as a string). For example, "ipv6": "fe80::14a0:46b2:9ab1:2fa"

If RemoveIpis set to false and the device has an ip address, the "ip" value in the json is set to the address (as a string).
For example, “ip”: “209.268.86.31”


String


AutoWebViewCaptureDelay


The amount of delay before capturing a webview after it has loaded.


Integer


DefaultAutoLayoutDelay


The default layout capture value that is used during type 10 if not indicated in the TealeafLayoutConfig.json.


Integer


DefaultKeyboardCapture


Disables capture of the keyboard.


true/false


TreatJsonDictionariesAsString


Used to determine whether or not to treat the JSON dictionary as a string.


true/false


UseJPGForReplayImagesExtension


Used to determine whether or not to use JPG for images in replay.


true/false


customEvent


The logging level of a custom event to be sent to the server and produces type 5 data.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


exception


The logging level of an exception to be sent to the server and produces type 6 data.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


mobileState


The logging level of a clientState to be sent to the server and produces type 1 data.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


location


The logging level of a geolocation to be sent to the server and produces type 13 data.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


orientation


The logging level of the orientation to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


screenChangeLevel


The logging level of a screen view to be sent to the server and produces type 2 data.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


layout


The logging level of a layout to be sent to the server and produces type 10 data.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


gestures


The logging level of a gesture to be sent to the server and produce type 11 data.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


UICPayload


The logging level of UIC data from the bridge on the webview to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


button:click


The logging level of a button with a fired click event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


button:load


The logging level of a button with a fired load event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


toggleButton:click


The logging level of a toggleButton with a fired click event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


slider:valueChange


The logging level of a slider with a fired value change event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


stepper:valueChange


The logging level of a stepper with a fired value change event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


selectList:valueChange


The logging level of a select list with a fired value change event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


selectList:load


The logging level of a select list with a fired load event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


datePicker:dateChange


The logging level of the datePicker with a fired dateChanged event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


pickerView:valueChanged


The logging level of the datePicker with a fired valueChanged event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


textBox:textChange


The logging level of a textBox with a fired textChange event to be sent to the server.

  • 0 does not send log data.
  • 1has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


textBox:_searchFieldBeginEditing


The logging level of a textBox with a fired _searchFieldBeginEditing event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3has the lowest priority (information).

Integer, 0-3


textBox:_searchFieldBeginChanged


The logging level of a textBox with a fired _searchFieldBeginChanged event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


textBox:_searchFieldEditingChanged


The logging level of a textBox with a fired _searchFieldEditingChanged event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


label:textChange


The logging level of a label with a fired textChange event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


label:load


The logging level of a label with a fired load event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


scroller:scrollChange


The logging level of a scroller with a fired scrollChange event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


actionSheet:buttonIndex


The logging level of an actionSheet with a fired buttonIndex event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


actionSheet:show


The logging level of an actionSheet with a fired show event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


alertView:buttonIndex


The logging level of an alertView with a fired buttonIndex event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


alertView:show


The logging level of an alertView with a fired show event to be sent to the server.

  • 0 does not send log data.
  • 1 has the highest priority (critical).
  • 2 has a medium priority (important).
  • 3 has the lowest priority (information).

Integer, 0-3


connection


If set to 1 (when device is on Cellular and/or WiFi) or 2 (when device is on WiFi), and when mobile application uses NSURLSession to make a server request, the result of the request is logged by the SDK. The message is logged as a type 3 connection message. See Connections (Type 3) messages messages) in the Tealeaf JSON schema for the connection message details.When set to 0, the SDK does not log this message.


Integer, 0-2

TealeafLayoutConfig.json

The settings defined in TealeafLayoutConfig.json to log type 10 screen layouts for screenviews of native mobile application sessions. The AutoLayout controller also enables the application to automatically continue logging type 10 screen layouts when it resumes to the foreground.

Edit the TealeafLayoutConfig.json to configure AutoLayout to log screen layouts. Each AutoLayout entry has the following sub-entries.

Sub-Entry
Description
Values

ScreenChange
This entry is replacing do in Tealeaf SDK 10.4.1 (and later).

Indicates if the screen should be tracked or not.

  • true (Capture Type 2s for this screen): Tracks the screen
  • false (Don't Capture Type 2s for this screen): Does not track the screen
    Example: To enable tracking for the screen:
    "ScreenChange": true

Boolean


DisplayName
This entry is replacing screenViewName in Tealeaf SDK 10.4.1.


Provides the name of the screen to be shown during replay, instead of showing the view controller name or activity name. DisplayName is displayed during replay in the navigation list. If DisplayName is empty, view controller class name is used.
For example, the DisplayName for a payments page might be "Payment Screen".
Example: To set the value of DisplayName to Payment Screen:
"DisplayName": "Payment Screen"


String


CaptureLayoutDelay
This entry is replaying delay in Tealeaf SDK 10.4.1 (and later).


The delay in milliseconds before Tealeaf SDK takes a layout capture of a screen. Increasing the value of this setting increases the amount of time that must pass between when the layout is loaded and when the layout logging action occurs. The CaptureLayoutDelay value is used for ScreenChange and ScreenShot.
Example: To set the delay between layout load and layout logging to 500 milliseconds:
"CaptureLayoutDelay": 500


Numeric


CaptureScreenShotDelay


The delay in milliseconds to wait before capturing screenshot. Increasing the value of this setting increases the amount of time that must pass between when the screen is loaded and when screen logging occurs. The CaptureScreenshotDelay value is used for ScreenChange and ScreenShot.
Example: To set the delay between screen load and screen logging logging to 500 milliseconds:
"CaptureScreenshotDelay": 500


Numeric


ScreenShot
This entry is replaying takeScreenShot in Tealeaf SDK 10.4.1 (and later). Note that takeScreenShot applied only for type 2 load events but ScreenShot applies to type 2, 4, 10, 11.


Indicates whether or not to capture screenshots on the screen.

  • true (Capture screenshots on type 2, 4, 10, 11): Takes a screen capture
  • false (Don't capture screenshots on this screen): Does not take a screen capture. If you do not want Tealeaf SDK to take any screenshots on a specific screen, set ScreenShot to false.
    Example: To turn on screen capturing for the screen activity:
    "ScreenShot": true

Boolean


CaptureUserEvents

This entry is replaying CaptureScreenContents in Tealeaf SDK 10.4.1 (and later).


Indicates whether or not to track user events like types 4s or 11s.

  • true (Capture type 4, 11): Tealeaf SDK resumes capturing user events (type 4, 11) on the specified screen.
  • false (Don't capture type 4, 11): Tealeaf SDK pauses, does not capture type 4, 11 events, and based on the value of CaptureScreenVisits, captures screen load/unload events.
    Example: To turn on user event capturing for the screen activity:
    "CaptureUserEvents": true

Boolean


CaptureLayoutOn


The event to capture layout on: Never, or on first user gesture, or on screen change.

  • 2 (Capture Layout on screen change): Tealeaf SDK captures the layout as soon as the view controller is loaded.
  • 1 (Capture Layout on first user gesture): Tealeaf SDK captures the layout after the end user makes a first gesture on a given view controller.
  • 0 (Don't Capture Layout):The layout is not captured.
    Example: To capture layout on screen changes:
    "CaptureLayoutOn": 2

Numeric


CaptureScreenshotOn


The event to capture screenshots for view controller load events: Never, or on first user gesture, or on screen changes.

  • 2 (Capture screen load screenshot on screen change): Captures screen load screenshot on screen changes. Tealeaf SDK captures the screenshot as soon as the view controller is loaded.
  • 1 (Capture screen load screenshot on first user gesture): Tealeaf SDK captures the screenshot after the end user makes a first gesture on a specified view controller.
  • 0 (Don't capture screen load screenshot): Does not take a screen capture. Note that even if CaptureScreenshotOn is set to 0 and ScreenShot is true, the Tealeaf SDK continues to capture screenshots on other user events, such as type 4 and type 11. CaptureScreenshotOn applies only to screenshots on view controller load.
    Example: To capture screen load screenshot on screen changes:
    "CaptureScreenshotOn": 2

Numeric


CaptureWebViewScreenshotOn


The event to capture the first screenshot on for a web view, if there is any.

  • 2 (Capture webview screen load screenshot on screen change): Captures the webview screen load screenshot on screen changes.
  • 1 (Capture webview screen load screenshot on first user gesture): Captures the webview screen load screenshot on the first user gesture.
  • 0 (Don't capture webview screen load screenshot): Does not capture the webview screen load screenshot.
    Example: To capture webview screen load screenshot on screen changes:
    "CaptureWebViewScreenshotOn": 2

Numeric


NumberOfWebViews
This entry is replacing numberOfWebviews and isWebView in Tealeaf SDK 10.4.1 (and later). If you set isWebView = false in earlier releases, you can now set NumberOfWebViews = 0. Non-zero values for NumberOfWebViews indicate the number of web views on a view controller.


Indicates the amount of webviews on the page. Default value is 0.


Numeric


AppendMapIds


Assigns an identifier to a target item. You can assign a readable identifier to the mid that maps to the target item. You can then configure events to fire when the identifier is encountered. You can use the same identifier for Android devices as well as iOS devices. When you assign the same identifier to your Android and iOS devices, you can create a single event in Event Manager that fires on the identifier. The event fires for both Android and iOS devices.
For example:
"AppendMapIds": { "[PWDV,0][ABOL,0][FL,0][TH,0][LL,0][TW,0][LL,1][LL,0]": { "mid": "LoginButton" }, "ibm.com.demoapp.main_activity_login:id\/send": { "mid": "LoginButton" }
Uses the mid setting to assign an identifier to two targets. The first target is for an iOS device and the second target is for an Android device. The target for both devices is identified as LoginButton. You can create a single event that fires when LoginButton is encountered in either application.


JSON

The following snippet is an example of a TealeafLayoutConfig.json file:

{
  "AutoLayout": {
      "IBMGlobalScreenSettings":{
          "ScreenChange": true,
          "DisplayName": "",
          "CaptureLayoutDelay": 0,
          "ScreenShot": false,
          "NumberOfWebViews": 0,
          "CaptureUserEvents": true,
          "CaptureScreenVisits": true,
          "CaptureLayoutOn": 2,
          "CaptureScreenshotOn": 0
      },
      "PaymentViewController":{
          "ScreenChange": false,
          "DisplayName": "The Payment Screen",
          "CaptureLayoutDelay": 0,
          "ScreenShot": false,
          "NumberOfWebViews": 0,
          "CaptureUserEvents": false,
          "CaptureScreenVisits": true,
          "CaptureLayoutOn": 0,
          "CaptureScreenshotOn": 0
      }
  },
  "AppendMapIds": {
      "[w,9290],[v,0]": {
          "mid": "ASimpleUIView"
      },
      "tag2999999": {
          "mid": "giveAdditionalId1"
      },
      "idxPathValue": {
          "mid": "giveAdditionalId2"
      }
  }
}

Masking settings

You can use the masking settings in the TealeafLayoutConfig.json file to apply masking on a per-screen basis and to apply value-based masking.

The masking dictionary in the TealeafLayoutConfig.json file can be applied to screens in the following ways:

  • individually
  • all screens globally
  • combination of per screen maskings for some screens and global masking for other screens.

Note:

Using the masking settings in the TealeafLayoutConfig.json file instead of TealeafBasicConfig.plist file is optional. If you are happy with the global masking in TealeafBasicConfig.plist file, you can continue to use TealeafBasicConfig.plist for masking. For masking in TealeafBasicConfig.plist, see Masking settings. Masking setting changes are backwards compatible.

After you edit the JSON files, make sure to validate the JSON using a JSON validator tool, such as https://jsonlint.com. Some developers use jsonviewer.stack.hu; however, jsonviewer.stack.hu is considered to be a formator and not a validator. The SDK fails silently if the JSON is invalid. If the SDK fails, it might continute to collect data, but the data might not be what you expect. For this reason, always ensure that the settings in the JSON use valid formatting.

Here is the masking dictionary in TealeafLayoutConfig.json.

"Masking": {
  "HasMasking": true,
  "HasCustomMask": true,
  "Sensitive": {
    "capitalCaseAlphabet": "X",
    "number": "9",
    "smallCaseAlphabet": "x",
    "symbol": "#"
  },
  "MaskIdList": [
    "^9[0-9][0-9][0-9]$"
  ],
  "MaskValueList": [
    "^3[47][0-9]  {13}$",
    "^4[0-9]{12}(?:[0-9]{3})?$"
  ]
}

Example: Per screen masking

{
  "AutoLayout": {
    "IBMGlobalScreenSettings": {
      "ScreenChange": true,
      "DisplayName": "",
      "CaptureLayoutDelay": 500,
      "ScreenShot": false,
      "NumberOfWebViews": 0,
      "CaptureUserEvents": true,
      "CaptureScreenVisits": true,
      "CaptureLayoutOn": 2,
      "CaptureScreenshotOn": 0
    },
    "PaymentViewController": {
      "ScreenChange": true,
      "DisplayName": "",
      "CaptureLayoutDelay": 500,
      "ScreenShot": false,
      "NumberOfWebViews": 0,
      "CaptureUserEvents": true,
      "CaptureScreenVisits": true,
      "CaptureLayoutOn": 2,
      "CaptureScreenshotOn": 0,
      "Masking": {
        "HasMasking": true,
        "HasCustomMask": true,
        "Sensitive": {
          "capitalCaseAlphabet": "X",
          "number": "9",
          "smallCaseAlphabet": "x",
          "symbol": "#"
        },
        "MaskIdList": [
          "^9[0-9][0-9][0-9]$"
        ],
        "MaskValueList": [
          "^3[47][0-9]{13} $",
          "^4[0-9]  {12}(?:[0-9]{3})?$"
        ]
      }
    }
  }
}

Example: Global masking

{
  "AutoLayout": {
    "IBMGlobalScreenSettings": {
      "ScreenChange": true,
      "DisplayName": "",
      "CaptureLayoutDelay": 500,
      "ScreenShot": false,
      "NumberOfWebViews": 0,
      "CaptureUserEvents": true,
      "CaptureScreenVisits": true,
      "CaptureLayoutOn": 2,
      "CaptureScreenshotOn": 0,
      "Masking": {
        "HasMasking": true,
        "HasCustomMask": true,
        "Sensitive": {
          "capitalCaseAlphabet": "X",
          "number": "9",
          "smallCaseAlphabet": "x",
          "symbol": "#"
        },
        "MaskIdList": [
          "^9[0-9][0-9][0-9]$"
        ]
      }
    }
  }
}

Example: Combination of per-screen masking and global masking

{
  "AutoLayout": {
    "IBMGlobalScreenSettings": {
      "ScreenChange": true,
      "DisplayName": "",
      "CaptureLayoutDelay": 500,
      "ScreenShot": false,
      "NumberOfWebViews": 0,
      "CaptureUserEvents": true,
      "CaptureScreenVisits": true,
      "CaptureLayoutOn": 2,
      "CaptureScreenshotOn": 0,
      "Masking": {
        "HasMasking": true,
        "HasCustomMask": true,
        "Sensitive": {
          "capitalCaseAlphabet": "X",
          "number": "9",
          "smallCaseAlphabet": "x",
          "symbol": "#"
        },
        "MaskIdList": [
          "^9[0-9][0-9][0-9]$"
        ],
        "MaskValueList": [
          "^3[47][0-9]{13}$",
          "^4[0-9]{12} (?:[0-9]  {3})?$"
        ]
      }
    },
    "PaymentViewController": {
      "ScreenChange": true,
      "DisplayName": "",
      "CaptureLayoutDelay": 500,
      "ScreenShot": false,
      "NumberOfWebViews": 0,
      "CaptureUserEvents": true,
      "CaptureScreenVisits": true,
      "CaptureLayoutOn": 2,
      "CaptureScreenshotOn": 0,
      "Masking": {
        "HasMasking": true,
        "HasCustomMask": true,
        "Sensitive": {
          "capitalCaseAlphabet": "X",
          "number": "9",
          "smallCaseAlphabet": "x",
          "symbol": "#"
        },
        "MaskIdList": [
          
        ],
        "MaskValueList": [
          "^3[47][0-9]{13}$",
          "^4[0-9]{12}(?:[0-9]{3} )?$"
        ]
      }
    }
  }
}

Value-based Masking

The Tealeaf SDK supports value-based masking, which lets you mask textboxes based on the text that is typed into them instead of the textbox's id/tag/xpath. Value-based masking is especially useful when users accidentally type PII data into a text box on some screens.
MaskValueList is an array of regex strings under the Masking dictionary. Like other masking settings, MaskValueList can be applied by screen or globally in the TealeafLayoutConfig.json file. Alternatively, if you do not want to use masking from the TealeafLayoutConfig.json file, you can use the MaskValueList array under the Masking dictionary in the TealeafBasicConfig.plist file. For details, see Masking in the TealeafBasicConfig.plist file.

For JSON examples of MaskValueList, see Example: Per screen masking and Example: combination of per screen masking and global masking. The regex strings in the MaskValueList aray mask Visa or Amex card numbers that are typed into textboxes irrespective of their id/tag/xpath.

Note:

Value-based masking does not work with screenshot-based Enhanced Replay. During screenshotting, it is not efficient to read values for each text field and apply regex. Only MaskId-based screenshotting should be used. Thus, either do not use Enhanced Replay for screens where there is PII data, or use Enhanced Replay with MaskId-based masking.

Updated 19 days ago


Configuration file for the iOS SDK library


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.