> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK 开发者合规指南

> Flashduty RUM SDK 的个人信息处理规则、权限说明、数据处理承诺，以及接入方完成隐私披露与延迟初始化的合规要求

<Info>
  本指南说明 Flashduty RUM SDK（以下简称"本 SDK"）在您的 App 中处理个人信息的规则与承诺，并指导您满足《个人信息保护法》《App 违法违规收集使用个人信息行为认定方法》以及各应用市场的隐私合规要求。本指南聚焦 SDK 自身的处理规则；Flashduty 作为受托处理者的服务条款与数据安全约定，另见《[数据保护协议](/zh/compliance/data-security)》与 RUM《[数据安全](/zh/rum/others/data-security)》。
</Info>

## 合规使用的两项关键要求

接入本 SDK 后，您作为 App 运营者需完成以下**两项**合规动作，缺一不可：

<CardGroup cols={2}>
  <Card title="① 隐私政策披露" icon="file-shield">
    在 App 隐私政策中说明已集成本 SDK 及其收集的个人信息。详见 [隐私政策披露](#1-隐私政策披露)。
  </Card>

  <Card title="② 延迟初始化" icon="hourglass-start">
    在用户同意隐私政策**之前**，不初始化本 SDK、不上报任何数据。详见 [延迟初始化](#2-延迟初始化)。
  </Card>
</CardGroup>

未完成上述动作即上线，可能导致 App 在应用市场审核或监管隐私合规检测中被判定为"违规收集使用个人信息"。本指南其余章节说明这两项要求背后的事实依据与具体落地步骤。

## 合规责任划分

本 SDK 作为嵌入您 App 的第三方组件运行，责任边界如下：

| 角色      | 主体                          | 职责                                        |
| ------- | --------------------------- | ----------------------------------------- |
| 个人信息处理者 | **您（App 运营者）**              | 就 App 整体的个人信息收集使用行为（含所集成的本 SDK）向用户披露并取得同意 |
| 受托处理者   | **北京快猫星云科技有限公司（Flashduty）** | 仅在为您提供应用性能监控（RUM）服务的必要范围内处理数据，不用于约定以外的目的  |

根据《个人信息保护法》第二十一条，您与 Flashduty 之间构成委托处理关系：处理的目的、方式及个人信息种类由您决定，Flashduty 仅按约定处理、采取必要措施保障信息安全，不超出约定范围使用，也不进行转委托。双方权利义务以《[数据保护协议](/zh/compliance/data-security)》为准。

## SDK 处理个人信息的情况

以下内容是您完成隐私政策披露的事实依据。

### 收集的个人信息

本 SDK 遵循"最小必要"原则，仅为实现崩溃分析、性能诊断与用户体验监控等功能而收集与之直接相关的信息，不收集与上述功能无关的个人信息。下表逐项列明所收集的信息类型、字段、目的与收集方式；除"应用运行信息"外，其余采集项均可通过配置关闭或脱敏（见 [数据处理规则与承诺](#数据处理规则与承诺)）。

| 信息类型    | 具体字段                                             | 收集目的               | 收集方式            | 是否可关闭           |
| ------- | ------------------------------------------------ | ------------------ | --------------- | --------------- |
| 设备信息    | 设备型号、品牌、设备名称、CPU 架构、屏幕信息                         | 区分机型上的崩溃与性能表现      | SDK 自动采集        | 否（基础信息）         |
| 操作系统信息  | 系统名称、版本号                                         | 区分系统版本的兼容性与故障分布    | SDK 自动采集        | 否（基础信息）         |
| 网络信息    | 网络连接状态、网络接口类型（Wi-Fi / 蜂窝网络 / 有线网络等）、上行/下行带宽、信号强度 | 分析网络环境对加载与请求耗时的影响  | SDK 自动采集        | 否（基础信息）         |
| 应用运行信息  | 包名、版本号、构建号、运行环境、SDK 版本                           | 关联问题与发布版本          | SDK 自动采集        | 否（必需）           |
| 崩溃与日志信息 | 崩溃堆栈、错误信息、ANR、自定义日志                              | 还原崩溃现场、定位缺陷        | 发生崩溃/错误或主动打点时采集 | 可（关闭错误追踪）       |
| 行为与性能信息 | 页面访问路径与停留时长、用户操作、资源加载耗时、长任务、启动耗时                 | 还原用户路径、分析性能瓶颈      | 用户交互/页面跳转时采集    | 可（关闭自动追踪或脱敏）    |
| 会话标识    | SDK 随机生成的会话 ID（`session.id`）                     | 将同一会话内的事件关联起来，便于追溯 | SDK 自动生成        | 否（已匿名化）         |
| 网络地址    | 上报来源 IP 所在的国家/地区                                 | 按地域统计性能与故障         | 服务端根据上报 IP 解析获得 | 可（关闭 IP / 地理位置） |

### 明确不收集的信息

为最小化隐私影响，本 SDK **不收集**以下信息，也**不申请**相关敏感权限：

* 设备唯一标识符：**IMEI、IDFA、IDFV、Android ID、MAC 地址、OAID** 等；
* 精确地理位置（GPS / 经纬度）；
* 通讯录、短信、通话记录、相册、麦克风、相机内容；
* 已安装应用列表；
* SIM 运营商名称 / 运营商 ID（`simCarrierIdName` / `simCarrierId`），及 IMSI、SIM 序列号等电信标识；
* 手机号、身份证号等可直接识别身份的信息（除非您主动通过 API 传入，见下方说明）。

本 SDK 承诺不以隐蔽、误导、欺诈等方式收集上述信息，也不会读取或回传与监控功能无关的设备数据。

<Note>
  若您主动通过 `setUserInfo`（用户 ID、名称、邮箱）或自定义属性向 SDK 传入可识别身份的信息，这些信息将随事件上报。请确保此类收集已在隐私政策中说明并取得同意，并**避免传入敏感个人信息**。
</Note>

### 申请的设备权限

本 SDK 遵循权限最小化原则，仅申请实现监控所必需的网络权限，不申请定位、相机、麦克风、通讯录、电话、存储等敏感权限，也不会在运行时向用户弹出敏感权限申请弹窗。

| 平台      | 权限                                        | 用途                | 是否必需 |
| ------- | ----------------------------------------- | ----------------- | ---- |
| Android | `android.permission.INTERNET`             | 上报监控数据            | 必需   |
| Android | `android.permission.ACCESS_NETWORK_STATE` | 读取网络状态用于指标采集与上报策略 | 必需   |
| iOS     | 无需声明额外权限                                  | 网络访问使用系统默认能力      | —    |

### 数据处理规则与承诺

除按最小必要原则收集外，本 SDK 还提供以下数据处理机制与承诺，帮助您进一步控制采集范围、降低隐私风险：

<AccordionGroup>
  <Accordion title="数据最小化与去标识化">
    本 SDK 仅采集实现监控所必需的信息。会话以随机 `session.id` 标识、默认不追踪用户身份，从而在保留趋势分析能力的同时实现数据匿名化。
  </Accordion>

  <Accordion title="采集可控（关闭 / 采样 / 脱敏）">
    您可对采集行为进行细粒度控制：

    * **关闭自动追踪**：可关闭用户操作（Action）与页面访问（View）的自动采集，仅保留显式上报；
    * **采样**：通过会话采样率降低采集与上报比例；
    * **属性脱敏**：通过 `EventMapper` 在事件上报前修改或丢弃字段，移除可能包含的个人信息（如操作名、URL 中的个人信息）；
    * **操作名屏蔽**：启用 `enablePrivacyForActionName` 将未显式命名的操作名替换为占位符。

    详见 RUM《[数据安全](/zh/rum/others/data-security)》。
  </Accordion>

  <Accordion title="IP 与地理位置可关闭">
    可在应用的"用户数据收集"设置中关闭 IP 地址与地理位置（国家/城市）数据的收集，关闭后立即在服务端生效。
  </Accordion>

  <Accordion title="代理上报">
    支持通过您自有的代理服务器转发全部 RUM 事件，使终端设备不直接与 Flashduty 通信，便于您统一管控外发流量。
  </Accordion>

  <Accordion title="撤销授权与数据销毁">
    当用户撤回同意、停止使用 SDK 或账户注销后，您可将同意状态切换为 `NOT_GRANTED` 立即停止采集；已上报数据由 Flashduty 按约定保留期到期后删除或匿名化。
  </Accordion>
</AccordionGroup>

## 接入方的合规义务

本节说明 [合规使用的两项关键要求](#合规使用的两项关键要求) 的具体做法。

### 1. 隐私政策披露

请您确保所开发或运营的 App 配备符合监管要求的《隐私政策》文本，并务必明确告知终端用户您的 App 已集成第三方 SDK 服务。您应在《隐私政策》中载明本 SDK 收集、使用个人信息的目的、方式与范围，并标明本 SDK 开发运营者名称（**北京快猫星云科技有限公司**）及其隐私政策链接。

您应在 App 登录注册页面及 App 首次运行时，通过弹窗、文本链接、附件等简洁明显且易于访问的方式，以清晰易懂的语言向用户告知《隐私政策》，由用户在充分知情的前提下作出自愿、明确的意思表示。涉及向第三方提供个人信息的，还应在"第三方 SDK 信息共享清单"中单独列明。

我们提供以下告知文案示例供您参考，您可以通过文字或表格方式向用户告知（表格形式可直接参考上文 [收集的个人信息](#收集的个人信息)）。请您理解，SDK 不同版本所提供的功能服务及所需字段信息，可能因您的选择或配置不同而存在差异；因此，请您结合本指南及您实际接入、使用的 SDK 运行情况，向用户进行充分告知并取得用户同意。

<CodeGroup>
  ```text 第三方 SDK 信息披露 theme={null}
  SDK 名称：Flashduty RUM SDK
  SDK 提供方：北京快猫星云科技有限公司
  使用目的：应用崩溃分析、性能监控与用户体验诊断
  收集的个人信息：设备信息（型号、品牌、操作系统及版本、CPU 架构）、
    网络信息（网络状态、网络接口类型、上行/下行带宽、信号强度）、应用运行与崩溃日志信息、
    应用使用过程中的页面访问与操作行为、随机生成的会话标识
  官网：https://flashcat.cloud
  隐私政策：http://docs.flashcat.cloud/zh/compliance/data-security
  ```
</CodeGroup>

### 2. 延迟初始化

为满足法律法规及监管要求，请确保在**取得用户同意后再初始化本 SDK**。为避免在取得用户同意前提前启动 SDK 收集、使用用户个人信息，本 SDK 提供了延迟初始化的 API 接口与合规初始化技术方案——详细操作指引见 [Android SDK 接入](/zh/rum/sdk/android/sdk-integration) 与 [iOS SDK 接入](/zh/rum/sdk/ios/sdk-integration)。

具体要求如下：

1. **先授权，后初始化**：确保用户阅读 App 隐私政策并取得授权之后，再按 App 功能需要在合适时机调用初始化接口；若用户不同意《隐私政策》，则**不得调用初始化接口**。如以 `PENDING` / `.pending` 状态初始化，该调用仅完成初始化并将数据暂存于本地、**不向服务端发送任何个人信息**，待切换为已授权后才开始上报。

2. **同意前不申请权限、不采集上报**：请勿在用户同意隐私政策之前动态申请涉及用户个人信息的敏感设备权限；请勿在用户同意前私自采集和上报个人信息（尤其注意 **Android ID、OAID、IMEI、MAC 地址、硬件序列号、应用安装列表**等）。上述标识本 SDK 默认即不采集，详见 [明确不收集的信息](#明确不收集的信息)。

| 同意状态                                      | SDK 行为             | 场景      |
| ----------------------------------------- | ------------------ | ------- |
| Android `GRANTED` / iOS `.granted`        | 采集并上报              | 用户已同意   |
| Android `NOT_GRANTED` / iOS `.notGranted` | 不采集任何数据            | 用户拒绝或撤回 |
| Android `PENDING` / iOS `.pending`        | 采集但暂不上报，待切换为已授权后发送 | 等待用户确认  |

下面给出各端"延迟初始化 + 同意变更"的写法：

<CodeGroup>
  ```kotlin Android (Kotlin) theme={null}
  import com.datadog.android.Datadog
  import com.datadog.android.privacy.TrackingConsent

  // 用户同意前：以 PENDING 初始化（采集但不上报）
  Datadog.initialize(this, configuration, TrackingConsent.PENDING)

  // 用户同意后：开始上报
  Datadog.setTrackingConsent(TrackingConsent.GRANTED)

  // 用户撤回同意：停止采集
  Datadog.setTrackingConsent(TrackingConsent.NOT_GRANTED)
  ```

  ```java Android (Java) theme={null}
  import com.datadog.android.Datadog;
  import com.datadog.android.privacy.TrackingConsent;

  // 用户同意前：以 PENDING 初始化（采集但不上报）
  Datadog.initialize(this, configuration, TrackingConsent.PENDING);

  // 用户同意后：开始上报
  Datadog.setTrackingConsent(TrackingConsent.GRANTED);

  // 用户撤回同意：停止采集
  Datadog.setTrackingConsent(TrackingConsent.NOT_GRANTED);
  ```

  ```swift iOS (Swift) theme={null}
  import DatadogCore

  // 用户同意前：以 .pending 初始化（采集但不上报）
  Datadog.initialize(with: configuration, trackingConsent: .pending)

  // 用户同意后：开始上报
  Datadog.set(trackingConsent: .granted)

  // 用户撤回同意：停止采集
  Datadog.set(trackingConsent: .notGranted)
  ```

  ```objective-c iOS (Objective-C) theme={null}
  @import DatadogObjc;

  // 初始化方式见 iOS SDK 接入文档；同意状态变更如下：
  // 用户同意后：开始上报
  [DDDatadog setWithTrackingConsent:DDTrackingConsentGranted];

  // 用户撤回同意：停止采集
  [DDDatadog setWithTrackingConsent:DDTrackingConsentNotGranted];
  ```
</CodeGroup>

<Note>
  上方仅演示延迟初始化所需的最小代码。各端完整的初始化参数、接入步骤与同意 API，请参考对应平台文档：

  * Android：[SDK 接入](/zh/rum/sdk/android/sdk-integration) · [高级配置 · 用户跟踪同意](/zh/rum/sdk/android/advanced-config#用户跟踪同意)
  * iOS：[SDK 接入](/zh/rum/sdk/ios/sdk-integration) · [高级配置](/zh/rum/sdk/ios/advanced-config)
</Note>

## 数据存储与安全

本 SDK 采集的数据仅上报至您配置的 Flashduty 服务端，用于向您提供监控服务，**不与其他第三方共享**，**不用于**广告、用户画像或跨 App 追踪。在数据全生命周期中，Flashduty 采取以下措施保障安全：

* **传输安全**：所有上报数据经 HTTPS/TLS 加密传输；
* **存储安全**：数据存储于中国境内合规服务器，并实施加密、访问控制与安全审计；
* **保留与删除**：数据按约定保留期存储，超期后删除或匿名化；
* **跨境传输**：未经您明确同意或法律法规另有规定，不进行跨境传输。

完整的安全措施、保留期限与跨境传输约定，见《[数据保护协议](/zh/compliance/data-security)》与 RUM《[数据安全](/zh/rum/others/data-security)》。

## 合规接入清单

<Steps>
  <Step title="补充隐私政策">
    在 App 隐私政策中加入本 SDK 的名称、提供方、收集信息与使用目的。
  </Step>

  <Step title="延迟初始化">
    确保用户同意前不初始化 SDK、不上报数据（或使用 `PENDING` 状态）。
  </Step>

  <Step title="登记第三方 SDK 清单">
    将本指南的个人信息字段与目的登记到 App 第三方共享清单 / 备案材料中。
  </Step>

  <Step title="支持撤回同意">
    在 App 设置中提供撤回同意的途径，撤回后调用 `setTrackingConsent(NOT_GRANTED)`。
  </Step>

  <Step title="避免传入敏感信息">
    检查 `setUserInfo` 与自定义属性，确保不向 SDK 传入敏感个人信息。
  </Step>
</Steps>

## 联系我们

本 SDK 由**北京快猫星云科技有限公司**提供。如您对本 SDK 的个人信息处理规则有任何疑问、意见或投诉，或需行使数据主体相关权利，可通过以下方式联系我们：

<CardGroup cols={2}>
  <Card title="技术支持" icon="headset">
    扫码添加企业微信，获取一对一技术支持

    <img src="https://api.apifox.com/api/v1/projects/4386769/resources/447591/image-preview" alt="技术支持企业微信" width="100" />
  </Card>

  <Card title="商务合作" icon="handshake">
    扫码添加商务经理企业微信

    <img src="https://api.apifox.com/api/v1/projects/4386769/resources/447590/image-preview" alt="商务经理企业微信" width="100" />
  </Card>

  <Card title="控制台反馈" icon="comment" href="https://console.flashcat.cloud">
    登录控制台左下角，提交反馈建议
  </Card>

  <Card title="邮件联系" icon="envelope" href="mailto:support@flashcat.cloud">
    [support@flashcat.cloud](mailto:support@flashcat.cloud)
  </Card>
</CardGroup>
