跳转到主要内容
Flashduty iOS RUM SDK 支持 iOS 12.0、iPadOS 12.0、tvOS 12.0 及以上版本。通过集成 SDK,您可以实时监控 iOS 应用的性能、错误和用户行为。
关于依赖和包名的说明Flashduty iOS SDK 完全兼容 Datadog 开源协议。在 Swift Package Manager 或 CocoaPods 中添加依赖时使用 FlashcatCoreFlashcatRUM 等名称,但在代码中 import 时使用 DatadogCoreDatadogRUM 等模块名。您可以无缝复用 Datadog 生态的文档、示例和最佳实践,同时享受 Flashduty 平台的服务。

接入步骤

1

添加 SDK 依赖

Flashduty iOS SDK 支持 Swift Package Manager 和 CocoaPods 两种安装方式:
  1. 在 Xcode 中,打开您的项目,选择 File > Add Package Dependencies
  2. 在搜索栏中输入 Flashduty SDK 的 Git 仓库 URL:
    https://github.com/flashcatcloud/fc-sdk-ios
    
  3. 选择版本规则:
    • 推荐:选择 Up to Next Major Version,并输入当前最新版本号(如 0.3.0
    • 这样可以在保持兼容性的同时获取 bug 修复和小版本更新
  4. 点击 Add Package,等待 Xcode 下载依赖
  5. 在弹出的 Choose Package Products 窗口中,选择需要添加到 Target 的模块:
    • FlashcatCore - 核心 SDK(必选)
    • FlashcatRUM - RUM 功能模块(必选)
    • FlashcatWebViewTracking - WebView 追踪(可选)
    • FlashcatCrashReporting - 崩溃报告(推荐)
  6. 确保每个模块都关联到正确的 Target,点击 Add Package 完成添加
获取最新版本号查看 SDK 版本发布页面 获取最新稳定版本。建议固定到具体版本号,避免意外更新。
2

获取应用凭证

在 Flashduty 控制台的 应用管理 页面:
  1. 创建或选择一个 iOS 应用
  2. 获取以下凭证信息:
    • Application ID - 应用唯一标识符
    • Client Token - 客户端访问令牌
3

初始化 SDK

在您的 AppDelegate.swiftapplication(_:didFinishLaunchingWithOptions:) 方法中初始化 SDK:
AppDelegate.swift
import UIKit
import DatadogCore

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        Datadog.initialize(
            with: Datadog.Configuration(
                clientToken: "<CLIENT_TOKEN>",
                env: "<ENV_NAME>"
            ),
            trackingConsent: .granted
        )

        return true
    }
}
参数说明:
  • clientToken - 从控制台获取的客户端令牌(必填)
  • env - 环境名称,如 productionstaging(必填)
  • trackingConsent - 用户追踪同意状态(详见下方说明)
TrackingConsent 同意状态:
状态行为
.granted开始收集数据并发送到 Flashduty
.pending开始收集和批处理数据,但不发送,等待后续确认
.notGranted不收集任何数据
您可以在初始化后通过 Datadog.set(trackingConsent:) 动态修改追踪同意状态。
4

启用 RUM 功能

配置并启用 RUM 功能。建议在 AppDelegate 中尽早启用:
AppDelegate.swift
import DatadogRUM

RUM.enable(
    with: RUM.Configuration(
        applicationID: "<RUM_APPLICATION_ID>",
        uiKitViewsPredicate: DefaultUIKitRUMViewsPredicate(),
        uiKitActionsPredicate: DefaultUIKitRUMActionsPredicate(),
        swiftUIViewsPredicate: DefaultSwiftUIRUMViewsPredicate(),
        swiftUIActionsPredicate: DefaultSwiftUIRUMActionsPredicate(
            isLegacyDetectionEnabled: true
        ),
        urlSessionTracking: RUM.Configuration.URLSessionTracking()
    )
)
配置参数说明:
  • applicationID - 从控制台获取的 RUM 应用 ID
  • uiKitViewsPredicate - UIKit 视图追踪策略
  • uiKitActionsPredicate - UIKit 用户操作追踪策略
  • swiftUIViewsPredicate - SwiftUI 视图追踪策略
  • swiftUIActionsPredicate - SwiftUI 用户操作追踪策略
  • urlSessionTracking - URLSession 网络请求追踪配置
SDK 将自动开始收集以下数据:
  • UIKit 和 SwiftUI 视图追踪
  • 用户交互事件
  • 网络请求监控
5

配置网络追踪(可选)

启用 URLSession 追踪:要监控从 URLSession 实例发送的网络请求,需要启用 URLSessionInstrumentation 并传入您的 delegate 类型:
import DatadogRUM

URLSessionInstrumentation.enable(
    with: .init(
        delegateClass: YourSessionDelegate.self
    )
)

let session = URLSession(
    configuration: .default,
    delegate: YourSessionDelegate(),
    delegateQueue: nil
)
自动追踪的网络信息:
  • 请求 URL、方法、状态码
  • 请求和响应头信息
  • 请求时长和数据大小
  • 网络错误信息
只有在视图处于活动状态时发起的网络请求才会被追踪。

视图追踪

Flashduty iOS SDK 支持自动追踪 UIKit 和 SwiftUI 视图。

UIKit 视图自动追踪

UIKit 视图会通过 DefaultUIKitRUMViewsPredicate 自动追踪。SDK 会追踪 UIViewController 的生命周期,自动记录视图的显示和隐藏。

SwiftUI 视图追踪

对于 SwiftUI 应用,需要在视图中添加 .trackRUMView() 修饰符:
import SwiftUI
import DatadogRUM

struct ProductView: View {
    var body: some View {
        VStack {
            Text("Product Details")
            // Your view content
        }
        .trackRUMView(name: "Product")
    }
}
trackRUMView(name:) 方法会在 SwiftUI 视图出现和消失时自动开始和停止视图追踪。

自定义视图追踪

如果需要更精细的控制,可以手动追踪视图:
import DatadogRUM

// 开始追踪视图
RUMMonitor.shared().startView(
    key: "view-key",
    name: "View Name",
    attributes: [:]
)

// 停止追踪视图
RUMMonitor.shared().stopView(
    key: "view-key",
    attributes: [:]
)

用户操作追踪

UIKit 操作自动追踪

UIKit 中的用户操作(如点击按钮、切换开关等)会通过 DefaultUIKitRUMActionsPredicate 自动追踪。

SwiftUI 操作追踪

对于 SwiftUI 控件,可以添加 .trackRUMTapAction() 修饰符:
import SwiftUI
import DatadogRUM

struct CheckoutView: View {
    var body: some View {
        Button("Complete Purchase") {
            // Button action
        }
        .trackRUMTapAction(name: "Purchase")
    }
}
List 内使用 .trackRUMTapAction(name:) 可能会影响默认手势(例如禁用 Button 操作或破坏 NavigationLink)。对于 List 元素,建议使用自定义操作 API。

自定义操作追踪

手动追踪用户操作:
import DatadogRUM

RUMMonitor.shared().addAction(
    type: .tap,
    name: "Button Tapped",
    attributes: ["button_id": "submit"]
)

高级配置

追踪错误

Flashduty iOS SDK 会自动捕获应用崩溃和未捕获的异常。您也可以手动记录错误:
import DatadogRUM

RUMMonitor.shared().addError(
    message: "Network request failed",
    type: "NetworkError",
    source: .network,
    attributes: [
        "url": "https://api.example.com",
        "status_code": 500
    ]
)
所有错误信息都会在控制台的 RUM Explorer 中显示,包括错误堆栈、属性和 JSON 详情。
详细的异常上报配置请参阅 iOS 异常上报

追踪后台事件

您可以追踪应用在后台运行时的事件(例如崩溃和网络请求):
RUM.enable(
    with: RUM.Configuration(
        applicationID: "<RUM_APPLICATION_ID>",
        trackBackgroundEvents: true
    )
)
追踪后台事件可能会产生额外的会话,从而影响计费。如有疑问,请联系 Flashduty 支持团队。

追踪用户信息

您可以为当前会话设置用户信息,便于追踪特定用户的行为:
import DatadogCore

Datadog.setUserInfo(
    id: "user-123",
    name: "John Doe",
    email: "john.doe@example.com",
    extraInfo: [
        "plan": "premium",
        "signup_date": "2024-01-15"
    ]
)
自定义用户属性(如 plansignup_date)可用于在分析看板中分组和过滤数据。

离线数据处理

iOS SDK 确保在用户设备离线时的数据可用性:
数据持久化机制:
  • 网络信号弱或设备电量过低时,事件以批次形式存储在本地
  • 网络恢复后自动上传,确保不丢失数据
  • 自动清理过旧数据,避免占用过多磁盘空间
即使用户在离线时使用应用,数据也会被保留并在网络恢复后上传,不会丢失任何监控数据。

WebView 集成

如果您的 iOS 应用中包含 WKWebView,可以启用 WebView 追踪来监控 Web 内容的性能和错误。
1

添加 WebView 依赖

在 Swift Package Manager 添加包依赖时,同时添加 FlashcatWebViewTracking 模块。
2

启用 WebView 追踪

在您的 ViewController 中启用 WebView 追踪:
import DatadogWebViewTracking
import WebKit

let webView = WKWebView()

// 为指定的 WKWebView 启用追踪
WebViewTracking.enable(
    webView: webView,
    hosts: ["example.com", "*.example.com"]
)
参数说明:
  • webView - 需要追踪的 WKWebView 实例
  • hosts - 允许追踪的域名列表,支持通配符(如 *.example.com
WebView 中的 Web 页面现在可以与原生应用的 RUM 数据关联起来。

禁用自动用户数据收集

为了符合隐私法规或组织数据治理政策,您可以禁用自动收集用户数据。
1

进入应用管理

创建应用后,进入 应用管理页面并点击您的应用。
2

配置数据收集

点击 用户数据收集 选项,使用开关控制以下设置:
  • 客户端 IP 收集
  • 地理位置数据收集

验证接入

接入完成后,验证集成是否成功:
1

查看控制台日志

在 Xcode 控制台中搜索 Datadog 关键字,查看 SDK 初始化和数据上报日志。
2

访问控制台

登录 Flashduty 控制台,进入对应的 RUM 应用,查看是否有数据上报。
3

触发测试事件

在应用中执行以下操作验证数据采集:
  • 打开应用的不同页面,验证页面浏览事件
  • 执行用户操作(点击、滑动等),验证交互事件
  • 触发网络请求,验证资源加载事件
  • 手动触发一个错误,验证错误追踪
如果看到数据上报且控制台中有数据显示,说明集成成功!

下一步