> ## 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.

# 应用管理

> 学习如何在 Flashduty 平台创建和管理 RUM 应用，包括应用创建、配置和权限管理

## 概述

RUM 应用是承载前端性能监控数据的容器，用于采集、存储和分析用户在前端应用中的真实体验数据。一个应用代表一个被监控的前端项目，可以是网站、移动应用或单页应用等。

<Tip>
  我们建议按照业务系统或应用来创建 RUM 应用，例如：官网、商城、管理后台等。
</Tip>

每个应用拥有独立的 `applicationId` 和 `clientToken`，用于识别数据来源并确保数据安全。应用创建后，您需要将 SDK 集成到您的前端代码中，以开始数据采集和监控。

## 应用权限

为了满足不同业务场景的数据安全需求，RUM 应用提供了灵活的访问级别设置：

| 访问级别   | 可见范围                     | 适用场景   |
| ------ | ------------------------ | ------ |
| **公开** | 账户内所有用户可见，可查看数据和处理 Issue | 通用业务应用 |
| **私有** | 仅创建者、账户管理员和主体账户可见        | 敏感业务数据 |

<Note>
  私有应用中，其他成员若需查看内容，可以通过分享故障链接的方式临时授权访问。
</Note>

## 创建应用

<Frame caption="RUM 应用创建界面">
  <img src="https://docs-cdn.flashcat.cloud/images/png/69baa5066dae4641adf1f769f3aacc54.png" alt="RUM 应用创建界面" />
</Frame>

通过 RUM 产品引导页面，您可以快速创建一个应用：

<Steps>
  <Step title="选择应用类型">
    选择应用对应的前端技术类型，目前支持 **JavaScript (JS)、Android、iOS、微信小程序**。
  </Step>

  <Step title="设置管理团队">
    指定该应用的管理团队。

    <Warning>
      团队所属成员对该应用拥有全部操作权限，非团队成员对该应用的配置仅可只读访问。
    </Warning>
  </Step>

  <Step title="配置地理信息">
    默认情况下，自动启用用户地理位置数据采集。如需禁用客户端 IP 或地理位置数据的自动采集，请关闭地理信息收集开关。

    详见 [数据收集](/zh/rum/others/data-collection)。
  </Step>

  <Step title="配置告警">
    默认情况下，自动开启告警通知，方便您及时处理错误。

    详见 [Issue 告警](/zh/rum/error-tracking/issue-alerts)。
  </Step>
</Steps>

## SDK 配置

<video controls className="w-full aspect-video rounded-xl" src="https://docs-cdn.flashcat.cloud/videos/app-sdk-config.mov" />

您可以在 **应用配置 > SDK 配置** 中修改参数并实时预览初始化代码，以便快速接入 SDK。

控制台为不同平台提供了详细的集成引导：

* **JavaScript（Web）**：配置服务名等参数后，实时预览 `flashcatRum.init()` 初始化代码
* **Android**：展示完整的集成步骤，包括添加 Gradle 依赖（`cloud.flashcat:dd-sdk-android-core` 和 `cloud.flashcat:dd-sdk-android-rum`）、在 `Application.onCreate()` 中初始化 SDK 并启用 RUM，以及可选的 WebView 追踪集成
* **iOS**：展示完整的集成步骤，包括添加 Swift Package Manager 依赖（`fc-sdk-ios`，版本 0.3.0 起）、在 `AppDelegate.didFinishLaunchingWithOptions` 中初始化 SDK 并启用 RUM，以及可选的 WebView 追踪集成
* **微信小程序**：通过表单填写 `env`、`service`、`version`、`sessionSampleRate` 后，实时预览基于 `@flashcatcloud/miniprogram-rum` 的 `flashcatRum.init()` 初始化代码（参见下方「微信小程序 SDK 配置助手」）

每个平台的 SDK 配置页面都会自动填入当前应用的 `applicationId` 和 `clientToken`，您可以直接复制代码到项目中使用。

<Warning>
  在应用管理中修改 SDK 配置并不会实时生效到已集成的客户端。所有配置更改需要在您的前端代码中更新并重新部署才能生效。
</Warning>

### 服务定义

服务是一个独立的、可部署的代码存储库，它映射到一组页面。

<Tabs>
  <Tab title="单体应用">
    如果您的应用程序是作为一个整体构建的，那么您的 RUM 应用只需要一个服务名称。

    ```javascript theme={null}
    flashcatRum.init({
      applicationId: 'YOUR_APP_ID',
      clientToken: 'YOUR_CLIENT_TOKEN',
      service: 'my-web-app'  // 单一服务名称
    });
    ```
  </Tab>

  <Tab title="微前端/多页面应用">
    如果您的浏览器应用程序由多个独立存储库构建，请为不同模块设置不同的服务名称。

    ```javascript theme={null}
    // 主应用
    flashcatRum.init({
      service: 'main-app'
    });

    // 子应用 A
    flashcatRum.init({
      service: 'module-a'
    });
    ```
  </Tab>
</Tabs>

### 微信小程序 SDK 配置助手

当应用类型选择为「微信小程序」时，**应用配置 > SDK 配置** 会展示专门的小程序集成向导：左侧填写表单参数，右侧实时生成可直接复制的初始化代码。

#### 表单字段

| 字段                  | 说明                   | 校验规则                  | 默认值     |
| ------------------- | -------------------- | --------------------- | ------- |
| `env`               | 环境变量，例如 `prod`、`dev` | 仅支持英文、数字、下划线；最长 24 字符 | 无       |
| `service`           | 服务名称，所有事件默认带上此标签     | 仅支持英文、数字、下划线；最长 24 字符 | 无       |
| `version`           | 版本号，便于数据分析时筛选        | 仅支持英文、数字、`.`；最长 24 字符 | `1.0.0` |
| `sessionSampleRate` | 会话采样率（百分比）           | 整数，范围 `0 ~ 100`       | `10`    |

<Note>
  表单字段填写完毕后，无需点击保存——预览代码会随输入实时更新。`applicationId` 和 `clientToken` 由系统自动填入，无需手动配置。
</Note>

#### 两步集成

<Steps>
  <Step title="添加依赖">
    在小程序项目中执行以下命令安装 SDK，并通过微信开发者工具完成 npm 构建：

    ```bash theme={null}
    npm install @flashcatcloud/miniprogram-rum
    ```
  </Step>

  <Step title="复制初始化代码">
    点击右侧代码块右上角的复制按钮，将生成的初始化代码粘贴到小程序的 `app.js`：

    ```typescript theme={null}
    import { flashcatRum } from '@flashcatcloud/miniprogram-rum';

    flashcatRum.init({
      applicationId: "<APPLICATION_ID>",
      clientToken: "<CLIENT_TOKEN>",
      service: "<SERVICE_NAME>",
      env: "<ENV_NAME>",
      version: "1.0.0",
      sessionSampleRate: 10
    });
    ```
  </Step>
</Steps>

完整的 SDK 能力、采集开关和事件上报机制请参见 [微信小程序 SDK 接入](/zh/rum/sdk/wechat-miniprogram/sdk-integration)。

## Link 集成

Link 集成允许您把 RUM 事件与外部系统关联起来，例如链路追踪平台、日志检索、对象存储中的崩溃日志包或内部排障系统。配置完成后，RUM 会根据事件类型和事件上下文生成跳转链接，并在事件详情中展示 **关联 Link**。

Link 集成位于应用详情的 **Link 集成** 页签，适用于所有应用类型。具有 **RUM 应用更新** 权限的成员可以新增、编辑、启用、禁用或删除链接配置。

### 内置 Tracing

内置 Tracing 是 Link 集成中的默认卡片，用于把资源事件中的 `trace_id` 跳转到您的后端链路追踪系统。

<Steps>
  <Step title="填写跳转链接">
    在 **Link 集成** 页签中找到 **Tracing** 卡片，填写链路追踪系统的跳转链接。链接中可以使用 `${trace_id}` 变量，RUM 会在展示链接时替换为资源事件中的实际 Trace ID。

    例如：`https://your-tracing-system.com/trace/${trace_id}`
  </Step>

  <Step title="开启 Tracing">
    保存跳转链接后，打开 **Tracing** 开关。未填写跳转链接时，开关不可开启。
  </Step>
</Steps>

<Note>
  内置 Tracing 仅匹配资源事件，并且只有事件包含 `trace_id` 时才会展示。跳转链接必须以 `http://` 或 `https://` 开头。
</Note>

### 添加外部链接

除内置 Tracing 外，您可以为不同事件类型添加自定义外部链接。

<Steps>
  <Step title="添加链接">
    在 **Link 集成** 页签中点击 **添加外部链接**，填写链接名称和跳转链接模板。
  </Step>

  <Step title="选择适用事件类型">
    选择该链接适用的事件类型。当前支持 **崩溃、错误、视图、操作、资源、会话**。

    崩溃属于错误事件：选择 **错误** 会匹配普通错误和崩溃；选择 **崩溃** 只匹配崩溃事件。
  </Step>

  <Step title="插入变量并预览">
    在 **跳转链接模板** 中插入变量，例如 `${session_id}`、`${error_id}` 或 `${trace_id}`。页面会使用示例值实时预览最终 URL，便于您确认模板是否符合外部系统的查询格式。
  </Step>
</Steps>

| 配置项    | 说明                            | 规则                            |
| ------ | ----------------------------- | ----------------------------- |
| 链接名称   | 在 RUM 事件详情中展示的外部系统名称          | 必填                            |
| 适用事件类型 | 控制该链接在哪些 RUM 事件上展示            | 至少选择一个事件类型                    |
| 跳转链接模板 | 外部系统 URL，可包含 `${variable}` 变量 | 必须以 `http://` 或 `https://` 开头 |
| 单条开关   | 控制该外部链接是否生效                   | 关闭后不再展示该链接                    |

### 可用变量

Link 集成会从当前事件上下文中提取变量并替换到 URL 模板中。

| 变量                  | 说明            | 常见适用事件            |
| ------------------- | ------------- | ----------------- |
| `${session_id}`     | 会话 ID         | 会话、视图、操作、错误、资源    |
| `${view_id}`        | 视图 ID         | 视图、操作、错误、资源       |
| `${action_id}`      | 操作 ID         | 操作                |
| `${error_id}`       | 错误 ID         | 错误、崩溃             |
| `${resource_id}`    | 资源 ID         | 资源                |
| `${trace_id}`       | 链路追踪 ID       | 资源、内置 Tracing     |
| `${application_id}` | RUM 应用 ID     | 所有事件              |
| `${service}`        | 服务名称          | 采集了 `service` 的事件 |
| `${version}`        | 版本            | 采集了 `version` 的事件 |
| `${env}`            | 环境            | 采集了 `env` 的事件     |
| `${usr_id}`         | 用户 ID         | 采集了用户信息的事件        |
| `${usr_name}`       | 用户名           | 采集了用户信息的事件        |
| `${usr_email}`      | 用户邮箱          | 采集了用户信息的事件        |
| `${start_time}`     | 当前事件详情查询的开始时间 | 查看器事件详情           |
| `${end_time}`       | 当前事件详情查询的结束时间 | 查看器事件详情           |

<Tip>
  建议把可选变量放在查询参数中，例如 `https://logs.example.com/search?session=${session_id}&error=${error_id}`。当某个查询参数只包含缺失变量时，RUM 会在生成链接时省略该参数；路径中的缺失变量会保留为原始 `${variable}` 文本。
</Tip>

### 查看关联 Link

当事件匹配已启用的链接配置时，您可以在以下位置打开外部系统：

* **RUM 查看器事件详情**：右上角显示 **关联 Link** 下拉入口，适用于会话、视图、操作、错误和资源等事件详情
* **错误事件详情**：详情区域内嵌展示匹配的关联 Link 卡片，支持复制或打开链接
* **Issue 错误样本**：在错误样本下方展示匹配的关联 Link，便于从 Issue 直接跳转到日志、链路追踪或其他排障系统

## 隐私设置

隐私设置允许您控制 RUM SDK 采集的用户隐私数据范围，以满足不同地区的数据合规要求。

| 设置项        | 说明                       | 关联字段                                       |
| ---------- | ------------------------ | ------------------------------------------ |
| **地理位置信息** | 控制是否采集用户的国家、省份、城市等地理位置信息 | `@geo_country`、`@geo_province`、`@geo_city` |
| **IP 地址**  | 控制是否采集用户的 IPv4 和 IPv6 地址 | `@geo_ip_v4`、`@geo_ip_v6`                  |

<Warning>
  关闭地理位置或 IP 地址采集后，相关筛选和分析维度将不再可用。请根据业务需求和合规要求谨慎调整。
</Warning>

## 删除应用

如果您不再需要某个应用，可以在应用详情的「基础信息」页签底部找到删除按钮。

<Warning>
  删除应用后：

  * 不会再接收任何新事件
  * 应用的 Client Token 将被立即撤销
  * 已采集的 RUM 事件数据仍可手动导出，或通过联系支持团队恢复已删除的应用

  此操作需要 **RUM 应用删除** 权限。
</Warning>

## 下一步

<CardGroup cols={3}>
  <Card title="SDK 接入指南" icon="code" href="/zh/rum/sdk/web/sdk-integration">
    了解如何接入 RUM SDK
  </Card>

  <Card title="高级配置" icon="sliders" href="/zh/rum/sdk/web/advanced-config">
    了解 SDK 的高级配置选项
  </Card>

  <Card title="分析看板" icon="chart-line" href="/zh/rum/analytics/web">
    查看和分析 RUM 数据
  </Card>

  <Card title="微信小程序 SDK" icon="mobile-screen-button" href="/zh/rum/sdk/wechat-miniprogram/sdk-integration">
    了解如何在微信小程序中接入 RUM SDK
  </Card>
</CardGroup>
