ไปที่คอนโซล

适用于 iOS 的性能监控使用入门

准备工作

如果您尚未将 Firebase 添加到您的 iOS 项目,请执行以下步骤。

第 1 步:将性能监控添加到您的应用

  1. 打开为项目创建的 podfile (或运行 pod init 创建一个 podfile),然后在目标部分中添加以下几行:

    pod 'Firebase/Analytics'
    pod 'Firebase/Performance'
  2. 在 podfile 目录中,运行以下命令来安装 Performance Monitoring 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. 重新编译您的应用。

Firebase 当前正在监控自动跟踪记录HTTP/HTTPS 网络请求

第 2 步:在 Firebase 控制台中查看性能监控结果

  1. 在 Xcode 模拟器中运行您的应用(Product -> Run)。

  2. 确认性能监控结果显示在 Firebase 控制台中。

    结果通常在 12 小时内显示。

第 3 步:(可选)添加自定义跟踪记录和自定义指标

自定义跟踪记录是与您应用中某些代码相关联的性能数据的报告。要详细了解自定义跟踪记录,请参阅性能监控概览

您的应用中可以有多项自定义跟踪记录,并且可以同时运行多项自定义跟踪记录。每项自定义跟踪记录都可以设置一个或多个指标来统计应用中与性能相关的事件,这些指标与创建它们的跟踪记录相关联。

请注意,自定义跟踪记录和指标的名称必须满足以下要求:没有前导空格或尾随空格,没有前导下划线 (_) 字符,最大长度为 32 个字符。

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

    Swift

    import FirebasePerformance
    

    Objective-C

    @import FirebasePerformance;
    
  2. 要启动和停止自定义跟踪记录,请使用类似于以下内容的几行代码封装要跟踪的代码:

    Swift

    let trace = Performance.startTrace(name: "customTraceName")
    
    // code that you want to trace
    
    trace.stop()
    

    Objective-C

    FIRTrace *trace = [FIRPerformance startTraceWithName:@"customTraceName"];
    
    // code that you want to trace
    
    [trace stop];
    
  3. 要添加自定义指标,请在每次发生事件时添加一行类似于以下内容的代码。例如,此自定义指标会统计应用中发生的与性能相关的事件,例如缓存命中或重试。

    Swift

    let trace = Performance.startTrace(name: "customTraceName")
    
    trace.incrementMetric(named:"eventName", by: 1)
    // code that you want to trace (and log custom metrics)
    
    trace.stop()
    

    Objective-C

    FIRTrace *trace = [FIRPerformance startTraceWithName:@"customTraceName"];
    
    [trace incrementMetric:@"eventName" by:1];
    // code that you want to trace (and log custom metrics)
    
    [trace stop];
    

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

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 控制台中。

第 5 步:部署应用,然后查看结果

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

您可以在 Firebase 控制台中监控性能数据

已知问题

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

后续步骤