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

# iOS SDK 兼容性

> 了解 iOS RUM SDK 支持的平台版本、开发工具、UI 框架和网络库兼容性

<Info>
  本文档说明 iOS RUM SDK 支持的操作系统版本、开发平台、UI 框架及第三方库兼容性。
</Info>

## 系统要求

iOS RUM SDK 支持以下操作系统版本：

| 平台                            | 支持状态    | 最低版本   | 说明                 |
| ----------------------------- | ------- | ------ | ------------------ |
| **iOS**                       | ✅ 完全支持  | 12.0+  | 推荐平台，所有功能完整支持      |
| **iPadOS**                    | ✅ 完全支持  | 12.0+  | 所有功能完整支持           |
| **tvOS**                      | ✅ 完全支持  | 12.0+  | 所有功能完整支持           |
| **macOS (Designed for iPad)** | ✅ 支持    | 11.0+  | iPad 应用运行在 macOS 上 |
| **macOS (Catalyst)**          | ⚠️ 部分支持 | 10.14+ | 支持构建，运行时某些功能可能受限   |
| **macOS**                     | ⚠️ 部分支持 | 10.14+ | 非官方支持，某些功能可能无法正常工作 |
| **visionOS**                  | ⚠️ 部分支持 | 1.0+   | 非官方支持，某些功能可能无法正常工作 |
| **watchOS**                   | ❌ 不支持   | -      | 目前不支持 watchOS 平台   |

## 开发工具链

### Xcode

<Note>
  SDK 使用最新版本的 Xcode 构建，但始终向后兼容 App Store 提交所需的最低支持 Xcode 版本。
</Note>

**推荐版本：** Xcode 14.0 及以上

### 依赖管理工具

| 工具                        | 支持状态   | 推荐程度   |
| ------------------------- | ------ | ------ |
| **Swift Package Manager** | ✅ 完全支持 | 推荐使用 ⭐ |
| CocoaPods                 | 🚧 计划中 | 即将支持   |
| Carthage                  | 🚧 计划中 | 即将支持   |

### 编程语言

| 语言              | 最低版本 | 支持状态       |
| --------------- | ---- | ---------- |
| **Swift**       | 5.0+ | ✅ 完全支持（推荐） |
| **Objective-C** | 2.0  | ✅ 完全支持     |

## 框架兼容性

<AccordionGroup>
  <Accordion title="UI 框架">
    | 框架          | 自动追踪 | 手动追踪 | 说明                                                  |
    | ----------- | ---- | ---- | --------------------------------------------------- |
    | **UIKit**   | ✅    | ✅    | 支持自动追踪 UIViewController 和用户交互                       |
    | **SwiftUI** | ⚠️   | ✅    | 需要使用 `.trackRUMView()` 和 `.trackRUMTapAction()` 修饰符 |

    <Tip>
      UIKit 应用可以完全自动追踪，SwiftUI 应用需要添加修饰符。
    </Tip>
  </Accordion>

  <Accordion title="网络框架">
    | 框架/库               | 自动追踪 | 手动追踪 | 说明                               |
    | ------------------ | ---- | ---- | -------------------------------- |
    | **URLSession**     | ✅    | ✅    | 需要启用 `URLSessionInstrumentation` |
    | **Alamofire**      | ❌    | ✅    | 可通过自定义拦截器手动追踪                    |
    | **Apollo GraphQL** | ❌    | ✅    | 可通过自定义拦截器手动追踪                    |
    | **AFNetworking**   | ❌    | ⚠️   | 已废弃，建议迁移到 URLSession             |

    <Note>
      推荐使用 URLSession，可以实现完全自动的网络请求追踪。
    </Note>
  </Accordion>

  <Accordion title="WebView 支持">
    | 类型            | 支持状态   | 说明                        |
    | ------------- | ------ | ------------------------- |
    | **WKWebView** | ✅ 完全支持 | 需要集成 `FlashcatWebView` 模块 |
    | **UIWebView** | ❌ 不支持  | 已被 Apple 弃用               |

    <Warning>
      UIWebView 已被 Apple 废弃，请使用 WKWebView。
    </Warning>
  </Accordion>
</AccordionGroup>

## SDK 模块

Flashduty iOS SDK 由以下模块组成：

| 依赖名称 (SPM/CocoaPods)        | Import 名称                | 功能说明          | 是否必需 |
| --------------------------- | ------------------------ | ------------- | ---- |
| **FlashcatCore**            | `DatadogCore`            | 核心 SDK，提供基础功能 | ✅ 必需 |
| **FlashcatRUM**             | `DatadogRUM`             | RUM 数据收集和上报   | ✅ 必需 |
| **FlashcatWebViewTracking** | `DatadogWebViewTracking` | WebView 集成支持  | 可选   |
| **FlashcatCrashReporting**  | `DatadogCrashReporting`  | 崩溃报告          | 推荐   |

<Tip>
  根据您的需求选择性集成模块，只有 `FlashcatCore` 和 `FlashcatRUM` 是必需的。
</Tip>

## 第三方依赖

<Note>
  Flashduty iOS SDK 依赖以下第三方库：
</Note>

| 库名称             | 版本     | 用途     |
| --------------- | ------ | ------ |
| PLCrashReporter | 1.12.0 | 崩溃报告收集 |

## 已知限制

<AccordionGroup>
  <Accordion title="SwiftUI 限制">
    * SwiftUI 视图需要手动添加 `.trackRUMView()` 修饰符才能被追踪
    * 在 `List` 内使用 `.trackRUMTapAction()` 可能会影响默认手势行为
    * 对于 `List` 元素，建议使用自定义操作 API

    <Tip>
      SwiftUI 应用建议结合自动追踪和手动追踪，以获得最佳监控效果。
    </Tip>
  </Accordion>

  <Accordion title="macOS 和 visionOS 限制">
    <Warning>
      **非官方支持平台：**

      * macOS 和 visionOS 不是官方支持的平台
      * 某些依赖 UIKit 的功能在这些平台上可能无法正常工作
      * 不保证未来版本的兼容性
    </Warning>
  </Accordion>

  <Accordion title="Catalyst 限制">
    * Catalyst 模式仅支持构建，运行时某些功能可能受限
    * 建议在实际使用前进行充分测试

    <Note>
      如果您的应用主要面向 macOS Catalyst，建议先在测试环境中验证所有功能。
    </Note>
  </Accordion>
</AccordionGroup>

## 最低部署要求

<Check>
  **必要条件：**

  * 最低操作系统版本：iOS 12.0 / iPadOS 12.0 / tvOS 12.0
  * 最低 Xcode 版本：Xcode 14.0
  * 最低 Swift 版本：Swift 5.0
  * 网络权限：应用需要有网络访问权限以上报数据
  * 存储空间：SDK 需要少量本地存储空间用于缓存离线数据
</Check>

## 性能影响

Flashduty iOS SDK 设计为轻量级，对应用性能的影响极小：

| 指标         | 影响                 |
| ---------- | ------------------ |
| **CPU 占用** | \< 1%              |
| **内存占用**   | \< 10 MB           |
| **包大小增加**  | 约 2-3 MB（视集成的模块而定） |
| **启动时间影响** | \< 100ms           |

<Tip>
  SDK 使用异步批处理机制，不会阻塞主线程，对用户体验影响微乎其微。
</Tip>

## 版本更新策略

SDK 遵循语义化版本控制（Semantic Versioning）：

| 更新类型     | 版本格式   | 兼容性   | 说明               |
| -------- | ------ | ----- | ---------------- |
| **主版本**  | v3.0.0 | 可能不兼容 | 可能包含破坏性更改，需要代码调整 |
| **次版本**  | v3.1.0 | 向后兼容  | 新增功能，保持向后兼容      |
| **补丁版本** | v3.1.1 | 完全兼容  | Bug 修复，完全向后兼容    |

<Tip>
  建议定期更新 SDK 到最新稳定版本以获得最佳性能和安全性。
</Tip>

## 相关文档

<CardGroup cols={3}>
  <Card title="SDK 接入" icon="plug" href="/zh/rum/sdk/ios/sdk-integration">
    了解如何集成 iOS SDK
  </Card>

  <Card title="高级配置" icon="sliders" href="/zh/rum/sdk/ios/advanced-config">
    配置 SDK 的高级功能
  </Card>

  <Card title="数据收集" icon="database" href="/zh/rum/sdk/ios/data-collection">
    了解 SDK 收集的数据类型
  </Card>
</CardGroup>
