Skip to content
Open
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
105 changes: 49 additions & 56 deletions en/rum/sdk/android/advanced-config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,7 @@ title: "Advanced Configuration"
description: "Configure advanced features of Android RUM SDK, including custom events, user tracking, sampling control, and data security"
---

<Note>
**About Dependencies and Package Names**

Flashduty Android SDK is fully compatible with the Datadog open-source protocol. In `build.gradle`, use `cloud.flashcat` group for dependencies, but in Kotlin/Java code, import classes from the `com.datadog.android` package. You can seamlessly leverage Datadog ecosystem documentation, examples, and best practices while enjoying Flashduty platform services.

</Note>

Flashduty Android RUM SDK provides rich advanced configuration options to help you customize data collection and context information based on business needs.
Android RUM SDK provides rich advanced configuration options to help you customize data collection and context information based on business needs.

<Info>
**Supported Configuration Scenarios:**
Expand All @@ -30,28 +23,28 @@ When using `ActivityViewTrackingStrategy` or `FragmentViewTrackingStrategy`, the
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.rum.GlobalRumMonitor
import cloud.flashcat.android.rum.GlobalRum

fun onResume() {
GlobalRumMonitor.get().startView(viewKey, viewName, attributes)
GlobalRum.get().startView(viewKey, viewName, attributes)
}

fun onPause() {
GlobalRumMonitor.get().stopView(viewKey, attributes)
GlobalRum.get().stopView(viewKey, attributes)
}
```
</Tab>

<Tab title="Java">
```java
import com.datadog.android.rum.GlobalRumMonitor;
import cloud.flashcat.android.rum.GlobalRum;

public void onResume() {
GlobalRumMonitor.get().startView(viewKey, viewName, attributes);
GlobalRum.get().startView(viewKey, viewName, attributes);
}

public void onPause() {
GlobalRumMonitor.get().stopView(viewKey, attributes);
GlobalRum.get().stopView(viewKey, attributes);
}
```
</Tab>
Expand All @@ -71,11 +64,11 @@ In addition to auto-tracked user interactions, you can track specific custom use
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.rum.GlobalRumMonitor
import com.datadog.android.rum.RumActionType
import cloud.flashcat.android.rum.GlobalRum
import cloud.flashcat.android.rum.RumActionType

fun onUserInteraction() {
GlobalRumMonitor.get().addAction(
GlobalRum.get().addAction(
RumActionType.TAP,
name,
attributes
Expand All @@ -86,11 +79,11 @@ fun onUserInteraction() {

<Tab title="Java">
```java
import com.datadog.android.rum.GlobalRumMonitor;
import com.datadog.android.rum.RumActionType;
import cloud.flashcat.android.rum.GlobalRum;
import cloud.flashcat.android.rum.RumActionType;

public void onUserInteraction() {
GlobalRumMonitor.get().addAction(
GlobalRum.get().addAction(
RumActionType.TAP,
name,
attributes
Expand All @@ -117,22 +110,22 @@ In addition to auto-tracked resources, you can manually track specific custom re
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.rum.GlobalRumMonitor
import com.datadog.android.rum.RumResourceKind
import cloud.flashcat.android.rum.GlobalRum
import cloud.flashcat.android.rum.RumResourceKind

fun loadResource() {
GlobalRumMonitor.get().startResource(resourceKey, method, url, attributes)
GlobalRum.get().startResource(resourceKey, method, url, attributes)
}

fun resourceLoadSuccess() {
GlobalRumMonitor.get().stopResource(
GlobalRum.get().stopResource(
resourceKey, statusCode, size,
RumResourceKind.NATIVE, attributes
)
}

fun resourceLoadError() {
GlobalRumMonitor.get().stopResourceWithError(
GlobalRum.get().stopResourceWithError(
resourceKey, statusCode, message, source, throwable
)
}
Expand All @@ -141,22 +134,22 @@ fun resourceLoadError() {

<Tab title="Java">
```java
import com.datadog.android.rum.GlobalRumMonitor;
import com.datadog.android.rum.RumResourceKind;
import cloud.flashcat.android.rum.GlobalRum;
import cloud.flashcat.android.rum.RumResourceKind;

public void loadResource() {
GlobalRumMonitor.get().startResource(resourceKey, method, url, attributes);
GlobalRum.get().startResource(resourceKey, method, url, attributes);
}

public void resourceLoadSuccess() {
GlobalRumMonitor.get().stopResource(
GlobalRum.get().stopResource(
resourceKey, statusCode, size,
RumResourceKind.NATIVE, attributes
);
}

public void resourceLoadError() {
GlobalRumMonitor.get().stopResourceWithError(
GlobalRum.get().stopResourceWithError(
resourceKey, statusCode, message, source, throwable
);
}
Expand Down Expand Up @@ -187,9 +180,9 @@ To record specific errors, notify the RUM SDK when an exception occurs:
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.rum.GlobalRumMonitor
import cloud.flashcat.android.rum.GlobalRum

GlobalRumMonitor.get().addError(
GlobalRum.get().addError(
message,
source,
throwable,
Expand All @@ -200,9 +193,9 @@ GlobalRumMonitor.get().addError(

<Tab title="Java">
```java
import com.datadog.android.rum.GlobalRumMonitor;
import cloud.flashcat.android.rum.GlobalRum;

GlobalRumMonitor.get().addError(
GlobalRum.get().addError(
message,
source,
throwable,
Expand All @@ -223,20 +216,20 @@ In addition to RUM SDK's default performance metrics, you can use the `addTiming
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.rum.GlobalRumMonitor
import cloud.flashcat.android.rum.GlobalRum

fun onHeroImageLoaded() {
GlobalRumMonitor.get().addTiming("hero_image")
GlobalRum.get().addTiming("hero_image")
}
```
</Tab>

<Tab title="Java">
```java
import com.datadog.android.rum.GlobalRumMonitor;
import cloud.flashcat.android.rum.GlobalRum;

public void onHeroImageLoaded() {
GlobalRumMonitor.get().addTiming("hero_image");
GlobalRum.get().addTiming("hero_image");
}
```
</Tab>
Expand All @@ -253,9 +246,9 @@ The RUM SDK automatically tracks user attributes. You can also add additional cu
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.rum.GlobalRumMonitor
import cloud.flashcat.android.rum.GlobalRum

GlobalRumMonitor.get().setUserInfo(
GlobalRum.get().setUserInfo(
id = "1234",
name = "John Doe",
email = "john@doe.com",
Expand All @@ -269,15 +262,15 @@ GlobalRumMonitor.get().setUserInfo(

<Tab title="Java">
```java
import com.datadog.android.rum.GlobalRumMonitor;
import cloud.flashcat.android.rum.GlobalRum;
import java.util.HashMap;
import java.util.Map;

Map<String, Object> extraInfo = new HashMap<>();
extraInfo.put("plan", "premium");
extraInfo.put("group", "vip");

GlobalRumMonitor.get().setUserInfo(
GlobalRum.get().setUserInfo(
"1234",
"John Doe",
"john@doe.com",
Expand All @@ -300,17 +293,17 @@ Use `clearAllData` to clear all unsent data currently stored in the SDK:
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.Datadog
import cloud.flashcat.android.Flashcat

Datadog.clearAllData()
Flashcat.clearAllData()
```
</Tab>

<Tab title="Java">
```java
import com.datadog.android.Datadog;
import cloud.flashcat.android.Flashcat;

Datadog.clearAllData();
Flashcat.clearAllData();
```
</Tab>
</Tabs>
Expand All @@ -335,18 +328,18 @@ To comply with privacy regulations like GDPR and CCPA, you can set user tracking

```kotlin
// Set consent state during initialization
Datadog.initialize(this, configuration, TrackingConsent.PENDING)
Flashcat.initialize(this, configuration, TrackingConsent.PENDING)

// Update consent state when user grants permission
Datadog.setTrackingConsent(TrackingConsent.GRANTED)
Flashcat.setTrackingConsent(TrackingConsent.GRANTED)

// Update consent state when user revokes permission
Datadog.setTrackingConsent(TrackingConsent.NOT_GRANTED)
Flashcat.setTrackingConsent(TrackingConsent.NOT_GRANTED)
```

| State | Behavior |
|-------|----------|
| `GRANTED` | Start collecting data and send to Flashduty |
| `GRANTED` | Start collecting data and send to Flashcat |
| `NOT_GRANTED` | Do not collect any data |
| `PENDING` | Collect but do not send, wait for user decision |

Expand All @@ -357,25 +350,25 @@ Add global context attributes that will be attached to all RUM events:
<Tabs>
<Tab title="Kotlin">
```kotlin
import com.datadog.android.rum.GlobalRumMonitor
import cloud.flashcat.android.rum.GlobalRum

// Add attribute
GlobalRumMonitor.get().addAttribute("user_type", "premium")
GlobalRum.get().addAttribute("user_type", "premium")

// Remove attribute
GlobalRumMonitor.get().removeAttribute("user_type")
GlobalRum.get().removeAttribute("user_type")
```
</Tab>

<Tab title="Java">
```java
import com.datadog.android.rum.GlobalRumMonitor;
import cloud.flashcat.android.rum.GlobalRum;

// Add attribute
GlobalRumMonitor.get().addAttribute("user_type", "premium");
GlobalRum.get().addAttribute("user_type", "premium");

// Remove attribute
GlobalRumMonitor.get().removeAttribute("user_type");
GlobalRum.get().removeAttribute("user_type");
```
</Tab>
</Tabs>
Expand Down
Loading