diff --git a/.devrev/.devrev/repo.yml b/.devrev/.devrev/repo.yml
new file mode 100644
index 0000000..a1d97bf
--- /dev/null
+++ b/.devrev/.devrev/repo.yml
@@ -0,0 +1 @@
+deployable: true
diff --git a/.github/.github/CODEOWNERS b/.github/.github/CODEOWNERS
new file mode 100644
index 0000000..0db9c6f
--- /dev/null
+++ b/.github/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @zeeshan-devrev @rohan-devrev
diff --git a/.gradle/.gradle/8.0.2/checksums/checksums.lock b/.gradle/.gradle/8.0.2/checksums/checksums.lock
new file mode 100644
index 0000000..fa64930
Binary files /dev/null and b/.gradle/.gradle/8.0.2/checksums/checksums.lock differ
diff --git a/.gradle/.gradle/8.0.2/fileChanges/last-build.bin b/.gradle/.gradle/8.0.2/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/.gradle/.gradle/8.0.2/fileChanges/last-build.bin differ
diff --git a/.gradle/.gradle/8.0.2/fileHashes/fileHashes.lock b/.gradle/.gradle/8.0.2/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..515a211
Binary files /dev/null and b/.gradle/.gradle/8.0.2/fileHashes/fileHashes.lock differ
diff --git a/.gradle/.gradle/8.0.2/gc.properties b/.gradle/.gradle/8.0.2/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/.gradle/.gradle/vcs-1/gc.properties b/.gradle/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 72b1ee4..464c906 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 2.2.8
+
+### Deprecated
+- Deprecated the `identifyAnonymousUser()` method.
+
+### Fixed
+- Resolved a potential OutOfMemory crash.
+
## 2.2.7
### Added
@@ -58,7 +66,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
@@ -68,7 +76,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
@@ -90,11 +98,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
@@ -109,20 +117,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
diff --git a/README.md b/README.md
index 10c11b0..77025a6 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,6 @@ DevRev SDK, used for integrating DevRev services into your Android app.
- [Sample app](#sample-app)
- [Features](#features)
- [Identification](#identification)
- - [Identify an anonymous user](#identify-an-anonymous-user)
- [Identify an unverified user](#identify-an-unverified-user)
- [Identify a verified user](#identify-a-verified-user)
- [Generate an AAT](#generate-an-aat)
@@ -39,8 +38,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)
@@ -209,23 +210,6 @@ The identification function should be placed appropriately in your app after the
> [!TIP]
> The `Identity` structure allows for custom fields in the user, organization, and account traits. These fields must be configured through the DevRev app before they can be utilized. For more information, refer to [Object customization](https://devrev.ai/docs/product/object-customization).
-#### Identify an anonymous user
-
-The anonymous identification method allows you to create an anonymous user with an optional user identifier, ensuring that no other data is stored or associated with the user.
-
-- Kotlin
- ```kotlin
- DevRev.identifyAnonymousUser(
- userId: String
- )
- ```
-- Java
- ```java
- DevRev.INSTANCE.identifyAnonymousUser(
- String userId
- );
- ```
-
#### Identify an unverified user
The unverified identification method identifies users with a unique identifier, but it does not verify their identity with the DevRev backend.
@@ -322,9 +306,6 @@ For example:
- Kotlin
```kotlin
- // Identify an anonymous user without a user identifier.
- DevRev.identifyAnonymousUser("abcd1234")
-
// Identify an unverified user with its email address as a user identifier.
DevRev.identifyUnverifiedUser(Identity(userId = "foo@example.org"))
@@ -333,9 +314,6 @@ For example:
```
- Java
```java
- // Identify an anonymous user without a user identifier.
- DevRev.INSTANCE.identifyAnonymousUser("abcd1234");
-
// Identify an unverified user with its email address as a user identifier.
DevRev.identifyUnverifiedUser(
new Identity("foo@example.org", null, null, null, null, null)
@@ -902,6 +880,32 @@ For example:
```
+#### 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.
@@ -1037,6 +1041,55 @@ DevRevObservabilityExtKt.startTimer(DevRev.INSTANCE, "response-time", new HashMa
DevRevObservabilityExtKt.endTimer(DevRev.INSTANCE, "response-time", new HashMap().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:
@@ -1240,7 +1293,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
**Solution**: The DevRev SDK reports all errors using Android's logging utility. Look for error messages in Android Studio's Logcat after applying `DEVREV SDK` filter.
- **Issue**: Support chat won't show.
- **Solution**: Ensure you have correctly called one of the identification methods: `DevRev.identifyUnverifiedUser(...)`, `DevRev.identifyVerifiedUser(...)`, or `DevRev.identifyAnonymousUser(...)`.
+ **Solution**: Ensure you have correctly called one of the identification methods: `DevRev.identifyUnverifiedUser(...)` or `DevRev.identifyVerifiedUser(...)`.
- **Issue**: Not receiving push notifications.
**Solution**: Ensure that your app is configured to receive push notifications and that your device is registered with the DevRev SDK.
diff --git a/docs/html/core/ai.devrev.sdk.interfaces/index.html b/docs/html/core/ai.devrev.sdk.interfaces/index.html
index 0b3f184..21fb0fe 100644
--- a/docs/html/core/ai.devrev.sdk.interfaces/index.html
+++ b/docs/html/core/ai.devrev.sdk.interfaces/index.html
@@ -110,27 +110,8 @@
+
+
\ No newline at end of file
diff --git a/docs/html/core/ai.devrev.sdk.utils/index.html b/docs/html/core/ai.devrev.sdk.utils/index.html
index 7e11948..ee6fd63 100644
--- a/docs/html/core/ai.devrev.sdk.utils/index.html
+++ b/docs/html/core/ai.devrev.sdk.utils/index.html
@@ -110,36 +110,21 @@
This method temporarily stops the tracking of user interactions, preventing the SDK from capturing user actions (SWIPE, SINGLE_TAP, DOUBLE_TAP, etc.) during this period.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/html/core/ai.devrev.sdk/resume-user-interaction-tracking.html b/docs/html/core/ai.devrev.sdk/resume-user-interaction-tracking.html
new file mode 100644
index 0000000..c5eeec0
--- /dev/null
+++ b/docs/html/core/ai.devrev.sdk/resume-user-interaction-tracking.html
@@ -0,0 +1,128 @@
+
+
+
+
+ resumeUserInteractionTracking
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This method resumes the tracking of user interactions, allowing the SDK to capture user actions (SWIPE, SINGLE_TAP, DOUBLE_TAP, etc.) for monitoring and analysis.