You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -21,6 +21,8 @@ After integrating the SDK, you (the app operator) must complete the following **
21
21
</Card>
22
22
</CardGroup>
23
23
24
+
Going live without completing these actions may cause your app to be flagged for "illegal collection and use of personal information" during app-store review or regulatory privacy-compliance scans. The rest of this guide explains the factual basis behind these two requirements and the concrete steps to implement them.
25
+
24
26
## Division of compliance responsibilities
25
27
26
28
The SDK runs as a third-party component embedded in your app. The responsibility boundary is as follows:
@@ -30,13 +32,15 @@ The SDK runs as a third-party component embedded in your app. The responsibility
30
32
| Personal information processor |**You (the app operator)**| Disclose and obtain consent for your app's overall collection and use of personal information, including the integrated SDK |
31
33
| Entrusted processor |**Beijing Flashcat Cloud Technology Co.,Ltd. (Flashduty)**| Process data only within the scope necessary to provide RUM services, never for purposes beyond what is agreed |
32
34
35
+
Under Article 21 of China's Personal Information Protection Law, you and Flashduty form an entrusted-processing relationship: you determine the purpose, means, and categories of personal information processed, while Flashduty only processes data as agreed, takes the necessary measures to safeguard it, does not use it beyond the agreed scope, and does not sub-entrust the processing. The rights and obligations of both parties are governed by the [Data protection agreement](/en/compliance/data-security).
36
+
33
37
## How the SDK processes personal information
34
38
35
39
The following is the factual basis for completing your privacy policy disclosure.
36
40
37
41
### Personal information collected
38
42
39
-
To support crash analysis, performance diagnostics, and user experience monitoring, the SDK automatically collects the following information. Apart from "app runtime information", all collection items can be disabled or masked via configuration (see [Data handling rules and commitments](#data-handling-rules-and-commitments)).
43
+
Following the principle of data minimization, the SDK collects only information directly related to implementing crash analysis, performance diagnostics, and user experience monitoring, and does not collect personal information unrelated to these functions. The table below itemizes the information types, fields, purposes, and collection methods. Apart from "app runtime information", all collection items can be disabled or masked via configuration (see [Data handling rules and commitments](#data-handling-rules-and-commitments)).
40
44
41
45
| Information type | Specific fields | Purpose | Collection method | Can be disabled |
42
46
| --- | --- | --- | --- | --- |
@@ -60,13 +64,15 @@ To minimize privacy impact, the SDK does **not** collect the following, and does
60
64
- SIM carrier name / carrier ID (`simCarrierIdName` / `simCarrierId`), and telephony identifiers such as IMSI or SIM serial number.
61
65
- Directly identifiable information such as phone numbers or ID numbers (unless you actively pass it in via the API — see the note below).
62
66
67
+
The SDK commits not to collect the above information through covert, misleading, or deceptive means, and does not read or transmit device data unrelated to monitoring.
68
+
63
69
<Note>
64
70
If you actively pass personally identifiable information to the SDK via `setUserInfo` (user ID, name, email) or custom attributes, this information is reported along with events. Make sure such collection is disclosed in your privacy policy and consented to, and **avoid passing in sensitive personal information**.
65
71
</Note>
66
72
67
73
### Device permissions requested
68
74
69
-
The SDK only requests the network permissions necessary for monitoring; it requests no sensitive permissions.
75
+
Following the principle of least privilege, the SDK only requests the network permissions necessary for monitoring. It does not request sensitive permissions such as location, camera, microphone, contacts, phone, or storage, and does not present runtime sensitive-permission prompts to the user.
70
76
71
77
| Platform | Permission | Purpose | Required |
72
78
| --- | --- | --- | --- |
@@ -76,6 +82,8 @@ The SDK only requests the network permissions necessary for monitoring; it reque
76
82
77
83
### Data handling rules and commitments
78
84
85
+
Beyond collecting data on a minimal, as-needed basis, the SDK provides the following data-handling mechanisms and commitments to help you further control the collection scope and reduce privacy risk:
86
+
79
87
<AccordionGroup>
80
88
<Accordiontitle="Data minimization and de-identification">
81
89
The SDK collects only the information necessary for monitoring. Sessions are identified by a random `session.id` and user identity is not tracked by default, anonymizing the data while preserving trend analysis.
@@ -106,7 +114,11 @@ This section details how to implement the [two key requirements](#two-key-requir
106
114
107
115
### 1. Privacy policy disclosure
108
116
109
-
Add the SDK to the "third-party SDK information sharing list" in your app's privacy policy. Reference text:
117
+
Make sure the app you develop or operate has a privacy policy that meets regulatory requirements, and be sure to clearly inform end users that your app integrates third-party SDK services. In your privacy policy, you should state the purpose, methods, and scope of this SDK's collection and use of personal information, and indicate the SDK's developer/operator name (**Beijing Flashcat Cloud Technology Co.,Ltd.**) along with a link to its privacy policy.
118
+
119
+
On the app's login/registration page and on first launch, you should inform the user of the privacy policy in clear, plain language through simple, prominent, and easily accessible means such as a pop-up, a text link, or an attachment, so that the user gives a voluntary and explicit indication of consent on a fully informed basis. Where personal information is provided to a third party, you should also list it separately in the "third-party SDK information sharing list".
120
+
121
+
We provide the following disclosure text as a reference; you may inform users in text or table form (for the table form, refer directly to [Personal information collected](#personal-information-collected) above). Please note that the features and the fields required may differ across SDK versions depending on your choices and configuration; therefore, inform users fully and obtain their consent based on this guide and the actual behavior of the SDK as you integrate and use it. The reference text can be used directly — adjust it to match your actual integration:
Do **not** call SDK initialization before the user accepts your privacy policy; or initialize with the `PENDING` state (collect but do not report), then switch to `GRANTED` after consent.
139
+
To meet legal and regulatory requirements, make sure you **initialize the SDK only after the user has consented**. To prevent the SDK from starting to collect and use personal information before consent, the SDK provides a deferred-initialization API and a compliant initialization approach — see [Android SDK integration](/en/rum/sdk/android/sdk-integration) and [iOS SDK integration](/en/rum/sdk/ios/sdk-integration) for detailed instructions.
140
+
141
+
The specific requirements are:
142
+
143
+
1.**Authorize first, then initialize**: only call the initialization API after the user has read your app's privacy policy and granted authorization, at an appropriate time per your app's needs; if the user declines the privacy policy, you **must not call the initialization API**. When you initialize with the `PENDING` / `.pending` state, the call only completes initialization and buffers data locally — it **sends no personal information to the server** — and reporting starts only after the state is switched to granted.
144
+
145
+
2.**No permissions, collection, or reporting before consent**: do not dynamically request sensitive device permissions involving personal information before the user accepts the privacy policy; do not collect or report personal information before consent (pay special attention to **Android ID, OAID, IMEI, MAC address, hardware serial number, and the installed-app list**). The SDK does not collect these identifiers by default — see [Information explicitly not collected](#information-explicitly-not-collected).
128
146
129
147
| Consent state | SDK behavior | Scenario |
130
148
| --- | --- | --- |
131
-
|`GRANTED`| Collect and report | The user has consented |
132
-
|`NOT_GRANTED`| Collect no data | The user declined or withdrew |
133
-
|`PENDING`| Collect but defer reporting until the state changes to `GRANTED`| Awaiting user confirmation |
149
+
| Android `GRANTED` / iOS `.granted`| Collect and report | The user has consented |
150
+
| Android `NOT_GRANTED` / iOS `.notGranted`| Collect no data | The user declined or withdrew |
151
+
| Android `PENDING` / iOS `.pending`| Collect but defer reporting until the state is switched to granted | Awaiting user confirmation |
152
+
153
+
The following shows the "deferred initialization + consent change" code for each platform:
134
154
135
155
<CodeGroup>
136
156
```kotlin Android (Kotlin)
137
157
importcom.datadog.android.Datadog
138
158
importcom.datadog.android.privacy.TrackingConsent
139
159
140
-
// Before consent: do not initialize, or initialize with PENDING
160
+
// Before consent: initialize with PENDING (collect but do not report)
For the full consent-state usage per platform, see [Android advanced configuration · User tracking consent](/en/rum/sdk/android/advanced-config#user-tracking-consent) and the corresponding docs.
209
+
<Note>
210
+
The snippets above show only the minimal code needed for deferred initialization. For the full initialization parameters, integration steps, and consent APIs per platform, see the corresponding docs:
Data collected by the SDK is reported only to the Flashduty server you configure and is used solely to provide monitoring services to you. It is **not shared with any other third party** and is **not used for** advertising, user profiling, or cross-app tracking. Data is stored on compliant servers within mainland China, transmitted over HTTPS/TLS, and protected by access control and auditing. For the full security measures, retention periods, and cross-border transfer terms, see the [Data protection agreement](/en/compliance/data-security) and the RUM [Data security](/en/rum/others/data-security) doc.
217
+
Data collected by the SDK is reported only to the Flashduty server you configure and is used solely to provide monitoring services to you. It is **not shared with any other third party** and is **not used for** advertising, user profiling, or cross-app tracking. Throughout the data lifecycle, Flashduty applies the following safeguards:
218
+
219
+
- **Transport security**: all reported data is transmitted over HTTPS/TLS.
220
+
- **Storage security**: data is stored on compliant servers within mainland China, with encryption, access control, and security auditing.
221
+
- **Retention and deletion**: data is stored for the agreed retention period and deleted or anonymized after expiry.
222
+
- **Cross-border transfer**: no cross-border transfer occurs without your explicit consent or unless otherwise required by laws and regulations.
223
+
224
+
For the full security measures, retention periods, and cross-border transfer terms, see the [Data protection agreement](/en/compliance/data-security) and the RUM [Data security](/en/rum/others/data-security) doc.
156
225
157
226
## Compliant integration checklist
158
227
@@ -173,3 +242,24 @@ Data collected by the SDK is reported only to the Flashduty server you configure
173
242
Review `setUserInfo` and custom attributes to ensure no sensitive personal information is passed to the SDK.
174
243
</Step>
175
244
</Steps>
245
+
246
+
## Contact us
247
+
248
+
This SDK is provided by **Beijing Flashcat Cloud Technology Co.,Ltd.** If you have any questions, feedback, or complaints about how this SDK processes personal information, or if you need to exercise your data-subject rights, you can contact us via:
249
+
250
+
<CardGroup cols={2}>
251
+
<Card title="Technical Support" icon="headset">
252
+
Scan to add our WeCom for one-on-one technical support
253
+
<img src="https://api.apifox.com/api/v1/projects/4386769/resources/447591/image-preview" alt="Technical Support WeCom" width="100" />
0 commit comments