Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .devrev/.devrev/repo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
deployable: true
1 change: 1 addition & 0 deletions .github/.github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @zeeshan-devrev @rohan-devrev
18 changes: 9 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Fixed an issue related to rendering of the event properties.
- Improved the verified identification flow.
- Fixed an issue with the session upload flow.
- Fixed an issue with the session upload flow.

## 2.0.4

Expand All @@ -59,7 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## 2.0.3

### Fixed
- Fixed an issue with manual unmasking of input components.
- Fixed an issue with manual unmasking of input components.
- Fixed an issue with session uploads when the app is rapidly killed.

## 2.0.2
Expand All @@ -81,11 +81,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## 1.1.5

### Added
- Added `setShouldPreferSystemTheme` for dynamic theme handling.
- Added support for masking compose views in session recordings & analytics.
- Added `setShouldPreferSystemTheme` for dynamic theme handling.
- Added support for masking compose views in session recordings & analytics.

### Fixed
- Improved the initialization sequence of the observability SDK.
- Improved the initialization sequence of the observability SDK.

## 1.1.4

Expand All @@ -100,20 +100,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Enhanced the session analytics feature to work better across different environments.

### Fixed
- Fix the bugs related to on-demand sessions providing a more stable experience.
- Fix the bugs related to on-demand sessions providing a more stable experience.

## 1.1.2

### Fixed
- Fix the session recording experience in the SDK.
- Fix the session recording experience in the SDK.

## 1.1.1

### Added
### Added
- Added new methods that allow tracking of screen transitions to understand user navigation within your app.

### Fixed
- Fix the session recording upload bug.
- Fix the session recording upload bug.

## 1.1.0

Expand Down
77 changes: 77 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@ DevRev SDK, used for integrating DevRev services into your Android app.
- [Mask using predefined tags](#mask-using-predefined-tags)
- [Mask web view elements](#mask-web-view-elements)
- [Unmask web view elements](#unmask-web-view-elements)
- [User interaction tracking](#user-interaction-tracking)
- [Custom masking provider](#custom-masking-provider)
- [Timers](#timers)
- [Track handled exceptions](#track-handled-exceptions)
- [Track screens](#track-screens)
- [Manage screen transitions](#manage-screen-transitions)
- [Check if the screen is transitioning](#check-if-the-screen-is-transitioning)
Expand Down Expand Up @@ -902,6 +904,32 @@ For example:
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```

#### User interaction tracking

The DevRev SDK automatically tracks user interactions such as taps, swipes, and scrolls. However, in some cases you may want to disable this tracking to prevent sensitive user actions from being recorded.

To **temporarily disable** user interaction tracking, use the following method:

- Kotlin
```kotlin
DevRev.pauseUserInteractionTracking()
```
- Java
```java
DevRevObservabilityExtKt.pauseUserInteractionTracking(DevRev.INSTANCE);
```

To **resume** user interaction tracking, use the following method:

- Kotlin
```kotlin
DevRev.resumeUserInteractionTracking()
```
- Java
```java
DevRevObservabilityExtKt.resumeUserInteractionTracking(DevRev.INSTANCE);
```

#### Custom masking provider

For advanced use cases, you can provide a custom masking provider to explicitly specify which regions of the UI should be masked during snapshots.
Expand Down Expand Up @@ -1037,6 +1065,55 @@ DevRevObservabilityExtKt.startTimer(DevRev.INSTANCE, "response-time", new HashMa
DevRevObservabilityExtKt.endTimer(DevRev.INSTANCE, "response-time", new HashMap<String, String>().put("id", "task-1337"));
```

#### Track handled exceptions

You can report a handled exception from a catch block using the `sendException` function.
This ensures that even if the exception is handled in your app, it will still be logged for diagnostics.

- Kotlin
```kotlin
DevRev.sendException(
exceptionObj: Throwable,
exceptionTag: String
)
```

- Java
```java
DevRevObservabilityExtKt.sendException(
DevRev.INSTANCE,
Throwable exceptionObj,
String exceptionTag
);
```

For example:

- Kotlin
```kotlin
try {
// Your code that may produce an exception
} catch (e: Throwable) {
DevRev.sendException(
exceptionObj = e,
exceptionTag = "login-failure"
)
}
```

- Java
```java
try {
// your code that may throw
} catch (Throwable e) {
DevRevObservabilityExtKt.sendException(
DevRev.INSTANCE,
e,
"login-failure"
);
}
```

#### Track screens

The DevRev SDK offers automatic screen tracking to help you understand how users navigate through your app. Although activities and fragments are automatically tracked, you can manually track screens using the following method:
Expand Down
21 changes: 1 addition & 20 deletions docs/html/core/ai.devrev.sdk.interfaces/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -110,27 +110,8 @@
<h1 class="cover"><span><span>Package-level</span></span> <span><span>declarations</span></span></h1>
</div>
<div class="tabbedcontent">
<div class="tabs-section" tabs-section="tabs-section"><button class="section-tab" data-active="" data-togglable="TYPE">Types</button><button class="section-tab" data-togglable="FUNCTION,EXTENSION_FUNCTION">Functions</button></div>
<div class="tabs-section" tabs-section="tabs-section"><button class="section-tab" data-active="" data-togglable="FUNCTION,EXTENSION_FUNCTION">Functions</button></div>
<div class="tabs-section-body">
<div data-togglable="TYPE">
<h2 class="">Types</h2>
<div class="table"><a data-name="-1832215238%2FClasslikes%2F197447377" anchor-label="Logger" id="-1832215238%2FClasslikes%2F197447377" data-filterable-set=":core:dokkaHtml/release"></a>
<div class="table-row" data-filterable-current=":core:dokkaHtml/release" data-filterable-set=":core:dokkaHtml/release">
<div class="main-subrow keyValue ">
<div class=""><span class="inline-flex">
<div><a href="-logger/index.html"><span><span>Logger</span></span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="-1832215238%2FClasslikes%2F197447377"></span>
<div class="copy-popup-wrapper "><span class="copy-popup-icon"></span><span>Link copied to clipboard</span></div>
</span></span></div>
<div>
<div class="title">
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":core:dokkaHtml/release"><div class="symbol monospace"><span class="token keyword">interface </span><a href="-logger/index.html">Logger</a></div></div></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div data-togglable="EXTENSION_FUNCTION">
<h2 class="">Functions</h2>
<div class="table"><a data-name="-340499117%2FFunctions%2F197447377" anchor-label="refreshToken" id="-340499117%2FFunctions%2F197447377" data-filterable-set=":core:dokkaHtml/release"></a>
Expand Down
128 changes: 128 additions & 0 deletions docs/html/core/ai.devrev.sdk.utils/-l-o-g_-t-a-g.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
<!DOCTYPE html>
<html class="no-js">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8">
<title>LOG_TAG</title>
<link href="../../images/logo-icon.svg" rel="icon" type="image/svg">
<script>var pathToRoot = "../../";</script>
<script>document.documentElement.classList.replace("no-js","js");</script>
<script>const storage = localStorage.getItem("dokka-dark-mode")
if (storage == null) {
const osDarkSchemePreferred = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
if (osDarkSchemePreferred === true) {
document.getElementsByTagName("html")[0].classList.add("theme-dark")
}
} else {
const savedDarkMode = JSON.parse(storage)
if(savedDarkMode === true) {
document.getElementsByTagName("html")[0].classList.add("theme-dark")
}
}
</script>
<script type="text/javascript" src="https://unpkg.com/kotlin-playground@1/dist/playground.min.js" async="async"></script>
<script type="text/javascript" src="../../scripts/sourceset_dependencies.js" async="async"></script>
<link href="../../styles/style.css" rel="Stylesheet">
<link href="../../styles/main.css" rel="Stylesheet">
<link href="../../styles/prism.css" rel="Stylesheet">
<link href="../../styles/logo-styles.css" rel="Stylesheet">
<link href="../../styles/font-jb-sans-auto.css" rel="Stylesheet">
<link href="../../ui-kit/ui-kit.min.css" rel="Stylesheet">
<script type="text/javascript" src="../../scripts/clipboard.js" async="async"></script>
<script type="text/javascript" src="../../scripts/navigation-loader.js" async="async"></script>
<script type="text/javascript" src="../../scripts/platform-content-handler.js" async="async"></script>
<script type="text/javascript" src="../../scripts/main.js" defer="defer"></script>
<script type="text/javascript" src="../../scripts/prism.js" async="async"></script>
<script type="text/javascript" src="../../ui-kit/ui-kit.min.js" defer="defer"></script>
<script type="text/javascript" src="../../scripts/symbol-parameters-wrapper_deferred.js" defer="defer"></script>
</head>
<body>
<div class="root">
<nav class="navigation theme-dark" id="navigation-wrapper">
<a class="library-name--link" href="../../index.html">
core
</a>
<button class="navigation-controls--btn navigation-controls--btn_toc ui-kit_mobile-only" id="toc-toggle"
type="button">Toggle table of contents
</button>
<div class="navigation-controls--break ui-kit_mobile-only"></div>
<div class="library-version" id="library-version">
</div>
<div class="navigation-controls">
<div class="filter-section filter-section_loading" id="filter-section">
<button class="platform-tag platform-selector jvm-like" data-active=""
data-filter=":core:dokkaHtml/release">androidJvm</button>
<div class="dropdown filter-section--dropdown" data-role="dropdown" id="filter-section-dropdown">
<button class="button button_dropdown filter-section--dropdown-toggle" role="combobox"
data-role="dropdown-toggle"
aria-controls="platform-tags-listbox"
aria-haspopup="listbox"
aria-expanded="false"
aria-label="Toggle source sets"
></button>
<ul role="listbox" id="platform-tags-listbox" class="dropdown--list" data-role="dropdown-listbox">
<div class="dropdown--header"><span>Platform filter</span>
<button class="button" data-role="dropdown-toggle" aria-label="Close platform filter">
<i class="ui-kit-icon ui-kit-icon_cross"></i>
</button>
</div>
<li role="option" class="dropdown--option platform-selector-option jvm-like" tabindex="0">
<label class="checkbox">
<input type="checkbox" class="checkbox--input" id=":core:dokkaHtml/release"
data-filter=":core:dokkaHtml/release"/>
<span class="checkbox--icon"></span>
androidJvm
</label>
</li>
</ul>
<div class="dropdown--overlay"></div>
</div>
</div>
<button class="navigation-controls--btn navigation-controls--btn_theme" id="theme-toggle-button"
type="button">Switch theme
</button>
<div class="navigation-controls--btn navigation-controls--btn_search" id="searchBar" role="button">Search in
API
</div>
</div>
</nav>
<div id="container">
<div class="sidebar" id="leftColumn">
<div class="dropdown theme-dark_mobile" data-role="dropdown" id="toc-dropdown">
<ul role="listbox" id="toc-listbox" class="dropdown--list dropdown--list_toc-list"
data-role="dropdown-listbox">
<div class="dropdown--header">
<span>
core
</span>
<button class="button" data-role="dropdown-toggle" aria-label="Close table of contents">
<i class="ui-kit-icon ui-kit-icon_cross"></i>
</button>
</div>
<div class="sidebar--inner" id="sideMenu"></div>
</ul>
<div class="dropdown--overlay"></div>
</div>
</div>
<div id="main">
<div class="main-content" data-page-type="member" id="content" pageIds="core::ai.devrev.sdk.utils//LOG_TAG/#/PointingToDeclaration//197447377">
<div class="breadcrumbs"><a href="../../index.html">core</a><span class="delimiter">/</span><a href="index.html">ai.devrev.sdk.utils</a><span class="delimiter">/</span><span class="current">LOG_TAG</span></div>
<div class="cover ">
<h1 class="cover"><span>LOG_</span><wbr></wbr><span>TAG</span></h1>
</div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":core:dokkaHtml/release"><div class="symbol monospace"><span class="token keyword">const </span><span class="token keyword">val </span><a href="-l-o-g_-t-a-g.html">LOG_TAG</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html">String</a></div></div></div>
</div>
<div class="footer">
<a href="#content" id="go-to-top-link" class="footer--button footer--button_go-to-top"></a>
<span>© 2025 Copyright</span>
<span class="pull-right">
<span>Generated by </span>
<a class="footer--link footer--link_external" href="https://github.com/Kotlin/dokka">
<span>dokka</span>
</a>
</span>
</div>
</div>
</div>
</div>
</body>
</html>
29 changes: 7 additions & 22 deletions docs/html/core/ai.devrev.sdk.utils/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -110,36 +110,21 @@
<h1 class="cover"><span><span>Package-level</span></span> <span><span>declarations</span></span></h1>
</div>
<div class="tabbedcontent">
<div class="tabs-section" tabs-section="tabs-section"><button class="section-tab" data-active="" data-togglable="TYPE">Types</button></div>
<div class="tabs-section" tabs-section="tabs-section"><button class="section-tab" data-active="" data-togglable="PROPERTY,EXTENSION_PROPERTY">Properties</button></div>
<div class="tabs-section-body">
<div data-togglable="TYPE">
<h2 class="">Types</h2>
<div class="table"><a data-name="-2078097426%2FClasslikes%2F197447377" anchor-label="Constants" id="-2078097426%2FClasslikes%2F197447377" data-filterable-set=":core:dokkaHtml/release"></a>
<div data-togglable="PROPERTY">
<h2 class="">Properties</h2>
<div class="table"><a data-name="-593879199%2FProperties%2F197447377" anchor-label="LOG_TAG" id="-593879199%2FProperties%2F197447377" data-filterable-set=":core:dokkaHtml/release"></a>
<div class="table-row" data-filterable-current=":core:dokkaHtml/release" data-filterable-set=":core:dokkaHtml/release">
<div class="main-subrow keyValue ">
<div class=""><span class="inline-flex">
<div><a href="-constants/index.html"><span><span>Constants</span></span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="-2078097426%2FClasslikes%2F197447377"></span>
<div><a href="-l-o-g_-t-a-g.html"><span>LOG_</span><wbr></wbr><span>TAG</span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="-593879199%2FProperties%2F197447377"></span>
<div class="copy-popup-wrapper "><span class="copy-popup-icon"></span><span>Link copied to clipboard</span></div>
</span></span></div>
<div>
<div class="title">
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":core:dokkaHtml/release"><div class="symbol monospace"><span class="token keyword">object </span><a href="-constants/index.html">Constants</a></div></div></div>
</div>
</div>
</div>
</div>
<a data-name="-1137665460%2FClasslikes%2F197447377" anchor-label="DefaultLogger" id="-1137665460%2FClasslikes%2F197447377" data-filterable-set=":core:dokkaHtml/release"></a>
<div class="table-row" data-filterable-current=":core:dokkaHtml/release" data-filterable-set=":core:dokkaHtml/release">
<div class="main-subrow keyValue ">
<div class=""><span class="inline-flex">
<div><a href="-default-logger/index.html"><span>Default</span><wbr></wbr><span><span>Logger</span></span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="-1137665460%2FClasslikes%2F197447377"></span>
<div class="copy-popup-wrapper "><span class="copy-popup-icon"></span><span>Link copied to clipboard</span></div>
</span></span></div>
<div>
<div class="title">
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":core:dokkaHtml/release"><div class="symbol monospace"><span class="token keyword">class </span><a href="-default-logger/index.html">DefaultLogger</a> : <a href="../ai.devrev.sdk.interfaces/-logger/index.html">Logger</a></div></div></div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":core:dokkaHtml/release"><div class="symbol monospace"><span class="token keyword">const </span><span class="token keyword">val </span><a href="-l-o-g_-t-a-g.html">LOG_TAG</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html">String</a></div></div></div>
</div>
</div>
</div>
Expand Down
Loading