-
了解全新的 MetricKit
借助新工具,比以往更快地发现和修复性能问题。与我们一起探索 MetricKit 如何为你提供关键的性能指标和实用的诊断信息,助你精准发现你的 App 在哪些方面仍有改进空间。我们还将介绍如何使用 StateReporting 框架按 App 状态对 App 的指标和诊断信息进行交叉分析,借此全面掌握相关情况,以便进一步排查并优化你 App 的体验。
章节
- 0:01 - Introduction
- 4:07 - Metrics
- 7:13 - Diagnostics
- 10:03 - Context
资源
- Getting started with StateReporting
- Analyzing app performance with MetricKit
- Monitoring app performance with MetricKit
- Track performance by app state using MetricKit
- MetricKit
相关视频
WWDC26
-
搜索此视频…
-
-
4:59 - Receive metrics from MetricKit
// Receive metrics from MetricKit import MetricKit let manager = MetricManager() for await report in manager.metricReports { processReport(report) } -
5:25 - Send your metrics to the server
// Send your metrics to the server import MetricKit for await report in manager.metricReports { let jsonData = try JSONEncoder().encode(report) sendToServer(jsonData) } -
5:44 - Access your performance metrics
// Access your performance metrics import MetricKit for await report in manager.metricReports { let intervalEntries = report.intervalEntries let fullDayEntry = intervalEntries.fullDayEntry for entry in intervalEntries { let memoryMetrics = entry.values.filter { $0.metricGroup == .memory } for metric in memoryMetrics { switch metric { case .peakMemory(let peak): processPeakMemory(peak) default: break } } } } -
8:59 - Receive diagnostics
// Receive diagnostics import MetricKit let manager = MetricManager() for await report in manager.diagnosticReports { processReport(report) } -
9:14 - Send your diagnostic data to the server
// Send your diagnostic data to the server import MetricKit for await report in manager.diagnosticReports { let jsonData = try JSONEncoder().encode(report) sendToServer(jsonData) } -
9:39 - Access your diagnostic data
// Access your diagnostic data import MetricKit for await report in manager.diagnosticReports { switch report.result { case .crash(let crash): let backtrace = crash.callStackTree let reason = crash.terminationReason let category = crash.terminationCategory processCrash(backtrace: backtrace, reason: reason, category: category) case .hang(let hang): processHangDiagnostic(hang) default: break } } -
13:57 - Receive MetricKit data with states
// Receive MetricKit data with states import MetricKit import StateReporting let domain = StateReportingDomain("com.metrickitsample.tabs") let manager = MetricManager(enabledStateReportingDomains: [domain]) // Report transitions throughout the app let reporter = StateReporter.reporter(for: domain.rawValue) reporter.reportTransition(to: "Reports") -
14:21 - Define custom structured types
// Define custom structured types import StateReporting @ReportableMetadata struct ViewConfiguration { let listSize: String let isSorted: Bool } let reporter = StateReporter.reporter( for: domain.rawValue, stableMetadata: ViewConfiguration.self ) reporter.reportTransition( to: "Reports", stableMetadata: ViewConfiguration(listSize: "large", isSorted: false) ) -
15:29 - Send encoded metric reports to the server
// Send encoded metric reports to the server import MetricKit for await report in manager.metricReports { let encoder = JSONEncoder() let formatKey = MetricReport.encodingFormatKey encoder.userInfo[formatKey] = MetricReport.EncodingFormat.byStateReportingDomain let jsonData = try encoder.encode(report) sendToServer(jsonData) }
-
-
- 0:01 - Introduction
MetricKit is a framework that provides metrics and diagnostics for monitoring real-world app performance. In iOS 27, the framework has been rebuilt from the ground up with a new Swift-first API and new features including Metal frame rate metrics, memory exception diagnostics, and granular data with state reporting.
- 4:07 - Metrics
MetricKit delivers daily reports containing performance metrics — including launch time, hangs, CPU, memory, organized into interval entries and metric groups. Metrics can be retrieved as Codable reports for server-side aggregation or inspected directly by filtering for specific groups and values.
- 7:13 - Diagnostics
When an app encounters a crash, hang, or other failure, MetricKit captures and immediately delivers a diagnostic report containing a symbolicated backtrace and metadata such as exception type and termination reason. iOS 27 adds memory exception diagnostics and a new termination category field on crash diagnostics.
- 10:03 - Context
The State Reporting framework lets apps report their active configuration or user flow as named domains and states, which then allows MetricKit to aggregate data separately for each state rather than blending them. Custom structured metadata can be attached to states using the @ReportableMetadata macro, and per-state metrics are surfaced as StateEntry values in the metric report.