Firebase 性能监控使用入门 (iOS)

本指南将向您介绍如何在您的应用中使用 Firebase 性能监控,步骤如下:

  1. 前提条件
  2. 将 Firebase 添加至您的 iOS 项目
  3. 将性能监控添加到您的应用
  4. (可选)在应用中定义一个自定义跟踪记录以及一个或多个自定义指标
  5. 在 Firebase 控制台中查看性能监控结果
  6. 部署应用并在 Firebase 控制台中查看结果

前提条件

开始之前,需要在您的环境中设置几项内容:

  • Xcode 8.2.1 或更高版本
  • 一个针对 iOS 8 或更高版本的 Xcode 项目
  • 您的应用的捆绑包标识符
  • CocoaPods 1.0.0 或更高版本

将 Firebase 添加至您的 iOS 项目

接下来,您需要将 Firebase 添加到您的应用,添加 SDK,然后在应用中初始化 Firebase。有关说明,请参阅将 Firebase 添加至您的 iOS 项目

将性能监控添加到您的应用

  1. 打开您为项目创建的 podfile(或使用 pod init 命令创建一个),然后在目标部分添加以下行:
    pod 'Firebase/Core'
    pod 'Firebase/Performance'
  2. 在您的 podfile 所在的目录中,运行以下命令来安装性能监控 SDK:
    pod install
  3. 命令结束后,使用 Xcode 打开 .xcworkspace 文件。
  4. UIApplicationDelegate 中导入 Firebase 模块:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  5. 配置一个 FirebaseApp 共享实例(通常在应用的 application:didFinishLaunchingWithOptions: 方法中配置):

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. 重新编译您的应用。 现在,自动跟踪记录和 HTTP/HTTPS 网络请求即会受到监控。

(可选)在应用中定义一个自定义跟踪记录以及一个或多个自定义指标

自定义跟踪记录是与您应用中某些代码相关联的性能数据的报告。要详细了解自定义跟踪记录,请参阅性能监控概览。您的应用中可以有多项自定义跟踪记录,并且可以同时运行多项自定义跟踪记录。每项自定义跟踪记录都可以设置一个或多个指标来统计应用中与性能相关的事件,这些指标与创建它们的跟踪记录相关联。

  1. 将性能监控模块添加到标头中:

    Swift

    import FirebasePerformance

    Objective-C

    @import FirebasePerformance;

  2. 在应用中您要开始跟踪记录的代码前面,添加以下代码行以启动一个名为 test trace 的跟踪记录:

    Swift

    let trace = Performance.startTrace(name: "test trace")

    Objective-C

    FIRTrace *trace = [FIRPerformance startTraceWithName:@"test trace"];

  3. 要统计您应用中发生的性能相关事件(例如缓存命中或重试),请在每次事件发生时添加与以下代码类似的一行代码,使用除 retry 以外的字符串命名该事件(如果您在统计不同类型的事件):

    Swift

    trace.incrementMetric(named:"retry", by: 1)

    Objective-C

    [trace incrementMetric:@"retry" by:1];

  4. 在您要停止跟踪记录的代码后面,添加下面这行代码:

    Swift

    trace.stop()

    Objective-C

    [trace stop];

在 Firebase 控制台中查看性能监控结果

  1. 在 Xcode 模拟器中运行您的应用(产品 -> 运行)。
  2. 确认性能监控结果显示在 Firebase 控制台中。结果应会在 12 小时内显示。

部署应用并在 Firebase 控制台中查看结果

使用 Xcode 模拟器和一个或多个测试设备验证性能监控之后,您可以将更新版本的应用部署给用户,并使用 Firebase 控制台来监控性能数据。

(可选)添加针对特定网络请求的监控

Firebase 性能监控会自动收集网络请求。这包括您的应用的多数网络请求,但部分请求可能不会纳入到报告中。要将特定网络请求纳入性能监控,请为您的应用添加以下代码:

Swift
guard let metric = HTTPMetric(url: "https://www.google.com", httpMethod: .get) else { return }

metric.start()
guard let url = URL(string: "https://www.google.com") else { return }
let request: URLRequest = URLRequest(url:url)
let session = URLSession(configuration: .default)
let dataTask = session.dataTask(with: request) { (urlData, response, error) in
        if let httpResponse = response as? HTTPURLResponse {
         metric.responseCode = httpResponse.statusCode
        }
        metric.stop()
}
dataTask.resume()
Objective-C
@property (nonatomic) FIRHTTPMetric *metric;
...
- (void)beginManualNetworkInstrumentation {
  self.metric =
      [[FIRHttpMetric alloc] initWithURL:[NSURL URLWithString:@"https://www.google.com"]
                              HTTPMethod:FIRHTTPMethodGET];

  [self.metric start];

  NSURLRequest *request =
      [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]];
  NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                                delegate:self];
  [connection resume];
}

- (void)connection:(NSURLConnection *)connection
    didReceiveResponse:(NSURLResponse *) response {
  NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response
  self.metric.responseCode = httpResponse.statusCode;
  [self.metric stop];
}

您通过这种方式专门捕获的 HTTP/HTTPS 网络请求会与性能监控自动捕获的网络请求一起显示在 Firebase 控制台中。

已知问题

  • 性能监控与 GTMSQLite 之间存在已知的兼容性问题。我们建议不要将性能监控用于使用 GTMSQLite 的应用。
  • 在调用 FirebaseApp.configure() 后执行方法调配可能会干扰 Performance Monitoring SDK。
  • iOS 8.0-8.2 模拟器的已知问题会阻止性能监控捕获性能事件。这些问题已在 iOS 8.3 模拟器及更高版本中修复。
  • 使用 NSURLSession 的 backgroundSessionConfiguration 建立的连接会表现出比预期更长的连接时间。这些连接是在进程外执行的,并且其发生的时间点反映了进程内的回调事件。

后续步骤

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面