> ## 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、HarmonyOS、Flutter、微信小程序、Electron、React Native**。
  </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.6.0 起）、在 `AppDelegate.didFinishLaunchingWithOptions` 中初始化 SDK 并启用 RUM，以及可选的 WebView 追踪集成
* **Flutter**：Flutter SDK 封装了 Android/iOS 原生 SDK，一次集成即可同时监控两端，详见 [Flutter SDK 接入](/zh/rum/sdk/flutter/sdk-integration)
* **微信小程序**：通过表单填写 `env`、`service`、`version`、`sessionSampleRate` 后，实时预览基于 `@flashcatcloud/miniprogram-rum` 的 `flashcatRum.init()` 初始化代码（参见下方「微信小程序 SDK 配置助手」）
* **Electron**：提供分步接入向导——主进程安装 `@flashcatcloud/electron-sdk` 并在 `app.whenReady()` 中完成初始化（必须在创建任何窗口之前，顺序不对时 SDK 不报错但采集不到数据）；如需采集窗口内的页面浏览、用户操作、网络请求与 JS 错误，渲染进程可选接入 `@flashcatcloud/browser-rum`，数据经 IPC 桥交由主进程统一上报；使用 Vite / webpack / esbuild 打包主进程时，还可加入对应插件以保留 SDK 的运行时依赖。详见 [Electron SDK 接入](/zh/rum/sdk/electron/sdk-integration)
* **React Native**：提供四步接入向导——安装 `@flashcatcloud/mobile-react-native` 与导航库对应的视图采集包（`@flashcatcloud/mobile-react-navigation` 或 `@flashcatcloud/mobile-react-native-navigation`）并执行 `pod install`；用 `withDatadogMetroConfig` 包装 Metro 配置，让 release 构建的 bundle 与 sourcemap 带上 Debug ID；在应用入口尽早初始化 SDK（`serviceName` 必填，否则 Android 与 iOS 会拆成两个服务）；在导航容器就绪后开启自动视图采集。详见 [React Native SDK 接入](/zh/rum/sdk/react-native/sdk-integration)

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

Web、Android、iOS、Flutter、HarmonyOS 与微信小程序的 SDK 配置页都提供 **允许远程配置** 开关，默认为开启。开启时生成的初始化代码会带上 `remoteConfigurationEnabled: true`（Android 与 HarmonyOS 端为对应的 `.setRemoteConfigurationEnabled(true)` 初始化参数）；关闭后该行不会出现在代码中，客户端也就不再请求远程配置。开关只影响生成的代码——配置本身还需在 [远程配置](#远程配置) 页签中启用并发布，发布前客户端仍使用代码中的配置。

<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` |
| `remoteConfigurationEnabled` | 是否在生成的初始化代码中启用远程配置 | 无 | 开启 |

<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,
      remoteConfigurationEnabled: true // 应用控制台中发布的配置
    });
    ```
  </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}` | 当前事件详情查询的开始时间 | 查看器事件详情、异常追踪错误详情（Issue 错误样本） |
| `${end_time}` | 当前事件详情查询的结束时间 | 查看器事件详情、异常追踪错误详情（Issue 错误样本） |

不是所有变量都能在每种事件类型上解析。编辑器会按当前选择的适用事件类型校验变量可用性：当前事件类型下无法解析的变量，在变量列表中显示为**虚线灰色**，悬停时会提示在哪些事件类型上取不到值。

| 变量 | 会话 | 视图 | 操作 | 错误/崩溃 | 资源 |
| - | - | - | - | - | - |
| `${session_id}` | ✓ | ✓ | ✓ | ✓ | ✓ |
| `${view_id}` | ✗ | ✓ | ✓ | ✓ | ✓ |
| `${action_id}` | ✗ | ✗ | ✓ | ✓ | ✓ |
| `${error_id}` | ✗ | ✗ | ✗ | ✓ | ✗ |
| `${resource_id}` | ✗ | ✗ | ✗ | ✗ | ✓ |
| `${trace_id}` | ✗ | ✗ | ✗ | ✗ | ✓ |
| `${usr_id}`、`${usr_name}`、`${usr_email}` | ✓ | ✓ | ✓ | ✓ | ✓ |
| `${service}`、`${version}`、`${env}` | ✓ | ✓ | ✓ | ✓ | ✓ |
| `${application_id}`、`${start_time}`、`${end_time}` | ✓ | ✓ | ✓ | ✓ | ✓ |

<Note>
  可用性按事件类型对应的数据表是否包含该字段判断，而不是按某条具体事件是否恰好有值：标记为可用只表示该事件类型允许解析出值，并不保证每条事件都有值。崩溃属于错误事件，可用性与错误一致。
</Note>

如果模板中使用了当前事件类型下无法解析的变量，编辑器会在输入框下方显示内联警告：变量写在**查询参数**中时，生成链接时整个参数会被丢弃；写在**路径**中时，会原样保留 `${variable}` 字面量。示例预览（示例数据）会省略不可用变量的示例值，因此预览结果与生产环境实际生成的链接一致。

<Warning>
  通过旧版配置选中的「全部」事件类型，在 ID 类变量中仅保证 `${session_id}` 可以解析（「全部」取所有事件表字段的交集）。建议改用具体的事件类型，以便编辑器准确校验变量可用性。
</Warning>

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

## 代码仓库

「代码仓库」页签用于把 RUM 应用与构建它的代码仓库关联起来，让 AI SRE 分析问题时可以直接定位到对应代码。该页签本身不采集数据，也不改变 SDK 上报行为。

页签只在账户已开启 AI SRE 时出现（SaaS 环境默认开启，私有化部署由部署配置中的 `enableAiSre` 开关决定）。仓库的授权与访问范围管理在 **插件 → Apps** 中完成，详见 [Apps](/zh/ai-sre/apps)。

### 添加仓库

<Steps>
  <Step title="打开页签">
    在应用详情页选择 **代码仓库** 页签。尚未关联任何仓库时，页面显示「暂未关联代码仓库」空状态。
  </Step>

  <Step title="填写仓库">
    点击 **添加仓库**，在 **仓库** 中输入 `owner/name`，或直接粘贴 GitHub 网页链接 / clone 链接（HTTPS 或 SSH 均可）——保存时会统一规范化为 `owner/name`。

    输入框的候选分为两组，都只是建议、不会自动填入：**GitHub App 已授权**（账户当前 GitHub App 安装已授权的仓库）与**符号上传记录**（该应用类型的符号上传记录里出现过的仓库，取最近 90 天）。候选中没有目标仓库时，直接输入或粘贴即可。
  </Step>

  <Step title="填写目录">
    在 **目录** 中填写应用在该仓库内的相对路径；仓库根目录填 `.`。
  </Step>

  <Step title="保存">
    点击 **保存**。之后可对非首条仓库使用 ↑ **设为主仓库** 调整顺序，或移除条目（移除需在确认弹窗中确认）。
  </Step>
</Steps>

### 规则与限制

| 项 | 规则 |
| - | - |
| 仓库数量 | 最多关联 10 个仓库 |
| 仓库格式 | GitHub 仓库，`owner/name` 形式（owner 最长 39 个字符且以字母或数字开头；name 最长 100 个字符） |
| 主仓库 | 列表有序，第一条为主仓库并带「主仓库」标记 |
| 目录 | 仓库内的相对路径，最长 255 个字符，不能包含 `..` 或反斜杠；保存时会去掉首尾 `/`、忽略 `.` 段，空值规范为 `.` |
| 重复关联 | 同一仓库 + 同一目录不能关联两次（仓库名比较不区分大小写） |
| 操作权限 | 新增、移除与设为主仓库需要 **RUM 应用更新** 权限 |

列表中展示的仓库名会链接到 GitHub 上对应的仓库。

### 与 AI SRE 的关系

* 关联仓库本身**不授予任何访问权限**。云端沙箱里的 AI 会话只能读取账户 GitHub App 安装所授权的仓库；手动填写的仓库只对使用宿主机自带凭证的 [BYOC](/zh/ai-sre/environments) 会话有意义。
* 账户尚未连接 GitHub App 时，页面顶部会提醒您，云端 AI 会话读取不到手动填写的仓库，并提供 **去连接** 入口（**插件 → Apps**）。
* 已连接 GitHub App 时，不在授权范围内的仓库会带警告标记，云端 AI 会话读取不到它。有 **Apps 插件访问** 权限的成员可以点击标记到 **插件 → Apps** 授权更多仓库，其他成员需联系管理员。
* 没有 GitHub App 的部署（例如纯 RUM 的私有化环境）只能手动填写仓库，不显示连接提醒。

## 远程配置

「远程配置」页签允许您在线调整采集与隐私参数，而无需改代码、重新发版。启用后，本页配置覆盖 SDK 初始化设置；停用后，各端恢复使用 SDK 初始化设置，数据采集不会停止。

<Note>
  * 远程配置目前支持 **Browser**、**iOS**、**Android**、**Flutter** 与**微信小程序**类型应用，其他平台类型将随各端 SDK 发布逐步开放。
  * 「远程配置」页签对所有账户开放（SaaS 与私有化部署一致），无需联系支持团队开通；页签是否显示只取决于应用类型是否属于上一条列出的受支持平台。
</Note>

### 配置项

| 配置项 | 取值 | 说明 |
| - | - | - |
| **会话采样率** | 0–100 整数（%） | 采集会话的比例。留空表示不下发该项，各端沿用 SDK 初始化时设置的值 |
| **会话回放采样率** | 0–100 整数（%） | 录制会话回放的比例。留空时沿用 SDK 设置 |
| **异常会话补采**（`sessionOnError`） | 开 / 关 / 沿用 SDK 设置 | 对会话采样未抽中的会话，报错后补报最多最近一分钟的事件，并继续采集；仅支持 Web SDK 0.3.0 及以上 |
| **异常回放补采**（`sessionReplayOnError`） | 开 / 关 / 沿用 SDK 设置 | 对已采集但回放采样未抽中的会话，报错后补报缓存回放并继续录制；仅支持 Web SDK 0.3.0 及以上 |
| **Trace 采样率** | 0–100 整数（%） | 在已采集的会话中再按此比例做一次会话级采样，决定哪些会话为符合条件请求注入 trace 头；同一会话内的结果一致。整体 Trace 覆盖率约为「会话采样率 × Trace 采样率」。留空时沿用 SDK 设置 |
| **回放脱敏级别** | `mask` / `mask-user-input` / `allow` | 会话回放对页面内容的默认遮蔽程度：`mask` 遮蔽文本并隐藏输入值；`mask-user-input` 保留页面文本、仅隐藏用户输入；`allow` 按原样录制。放宽级别会开始录制此前未采集的内容，且已上传的回放无法事后补充脱敏，发布前系统会再次确认 |
| **自定义配置项** | 键值对，类型支持字符串 / 数字 / 布尔值 / JSON | 随远程配置下发到客户端、由应用代码读取，平台不解析其内容。最多 5 个；键名最长 64 字节（按 UTF-8 计，非字符数），单个值最大 4 KB，JSON 值最多嵌套 3 层（对象、数组各计一层），全部自定义项合计最大 16 KB |

两个异常补采开关独立设置：**开**下发 `true`，**关**下发 `false`，**沿用 SDK 设置**不下发该项，由 `init()` 中对应参数决定（未设置时默认关闭）。Browser 应用需使用 Web SDK 0.3.0 及以上，并在初始化时开启 `remoteConfigurationEnabled: true`。关闭补采不影响普通采样已抽中的会话。补采范围、计费与限制见 [Web SDK 异常会话补采](/zh/rum/sdk/web/advanced-config#异常会话补采)。

iOS、Android、Flutter 与微信小程序应用同样展示「远程配置」页签，但这几端的 SDK 仅读取**会话采样率**与**自定义配置项**两项（均无 Session Replay，其余配置不下发也不生效）。各端 SDK 都需要在初始化时开启 `remoteConfigurationEnabled: true`（默认关闭，未开启的应用不会请求配置）；iOS 端需要 SDK 0.6.0 及以上，接入方式见 [iOS SDK 高级配置](/zh/rum/sdk/ios/advanced-config)；Android 端需要 SDK 0.7.0 及以上，接入方式见 [Android SDK 高级配置](/zh/rum/sdk/android/advanced-config)；Flutter 端需要 `flashcat_flutter_plugin` 0.2.0 及以上，接入方式见 [Flutter SDK 高级配置](/zh/rum/sdk/flutter/advanced-config)。

<Warning>
  自定义配置项会下发到客户端，可能被终端用户读取。请勿填写密钥、访问令牌或个人敏感信息。
</Warning>

### 条件规则

条件规则是协议预留能力，当前控制台版本暂不支持编辑：页面上没有规则编辑界面，保存配置时服务端存量的规则会原样保留，不会被清除。后续版本将开放规则编辑。

协议语义简述：除默认值外，可按条件向不同客户端下发不同配置——

* 匹配条件支持 `env`、`app_version`、`sdk` 三个维度，条件之间为 AND 精确匹配；SDK 未上报的维度永不匹配该规则。单个匹配值最长 256 字节。
* 规则自上而下求值，**第一条完全匹配的规则生效**；规则的覆盖值叠加在默认配置之上，规则未设置的字段沿用默认配置。
* 每个应用最多 20 条规则。

### 发布与生效

* 发布前页面会逐项展示新版本与线上配置的差异，并可查看原始 JSON。发布时可填写选填的「变更说明」（最长 255 字，例如「大促期间降低采样率」），随版本保存并展示于变更历史。确认后发布生成新版本。
* 生效方式固定为「下一个新会话生效」：进行中的会话不受影响，新会话逐步使用新配置；支持远程配置的客户端通常在发布后约 4 小时内完成切换。
* 「立即生效」（新配置到达客户端时结束当前会话、立即按新配置开启新会话）为协议预留能力，当前控制台版本暂不支持选择，后续版本开放。紧急场景（需要立刻止血或放量采集）可调用 SDK 的 `stopSession()` 主动结束当前会话，让配置随新会话尽快生效。
* 协议还预留了「前台刷新」（`refresh_on_foreground`）开关：开启后客户端每次回到前台时重新拉取配置，而非等待轮询。默认关闭——所有客户端集中在回前台的时刻请求配置，形同发布 herd，会冲击配置端点，仅适合确实需要分钟级生效的应用。该开关暂不可在控制台设置，将随后续版本开放。

### 版本历史与采用情况

* 变更历史保留最近 50 个版本，更早的版本将自动清理且无法回滚。每条历史展示操作人与变更说明（如填写）。您可以将任一保留中的历史版本回滚为当前配置，回滚同样会生成新版本。
* 回滚产生的新版本带内容等价标注：若其配置内容与历史上某个更早版本完全相同，历史列表会标注该版本与那个最早相同内容的版本等价——版本号跳变不代表配置内容发生了变化。
* 发布面板按最近到达的采样会话展示**采用情况**：方格图以 10×10 共 100 格表示各版本的会话占比，每格代表 1% 的会话（按各版本采样率估算），右侧明细表逐组列出**版本**、**占比**与**会话数**。上方数字区展示**活跃会话**、**已上报**、**未上报**与**当前版本采用率**四项统计，其中当前版本采用率在窗口内到达的会话全部切换后附带勾选的「最近会话已切换」标记。各组按以下规则归并：当前版本单独一组并标注「当前版本」，占比最高的两个旧版本各自一组，其余旧版本合并为「更早版本」，未上报配置版本的会话单独列为「未上报」（SDK 版本过低或尚未拉取过配置）。状态标签为「等待新会话」（刚发布，尚无会话按当前版本开始）、「生效中」（部分会话已切换）、「最近会话已切换」（窗口内到达的会话均已在当前版本）、「未收到配置」（最近会话均未上报配置版本，常见为 SDK 未开启远程配置或版本过低）、「暂无数据」（窗口内暂无新会话）、「未检测到生效」（发布已超过约 8 小时仍未切到当前版本）。点击**查看会话明细**可跳转到事件浏览器查看这批样本会话；在版本卡片上点击**查看配置**可展开当前生效版本的完整内容，再次点击**收起配置**收起。窗口内采样会话少于 20 条时，面板不画方格图、只展示各组的实际会话数、不估算占比（占比由采样率放大估算，样本过少时结果没有意义）。

## 删除应用

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

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.