对于APP的性能监控,想必大部分的开发者第一时间想到的是使用第三方平台提供的库,以节约开发时间。但是对于极度重视信息安全与价值的开发者来说这可不是什么好事。所以今天来介绍iOS自带的性能监控库MetricKit,它能够精确的帮我们收集各种性能收据,并返回给我们。 1. 启用MetricKit - // 带上协议
- @interface AppDelegate () <MXMetricManagerSubscriber>
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- if (@available(iOS 13.0, *)) {
- // 启动监控
- [MXMetricManager.sharedManager addSubscriber:self];
- }
- return YES;
- }
- - (void)applicationWillTerminate:(UIApplication *)application
- {
- if (@available(iOS 13.0, *)) {
- [MXMetricManager.sharedManager removeSubscriber:self];
- }
- }
复制代码
2. 数据搜集 以下是MXMetricManagerSubscriber 协议的两个方法,如果需要非常精确的数据上传到自己的后台,请实现这个两个方法上传数据,其中含有的数据数据详情,可查看官方文档。如果不需要,部分数据会传到苹果公司的后台,可以通过 Xcode > Window -> Organizer -> Metrics 查看,可以查看各项指标,并且和历史版本进行对比。 - - (void)didReceiveMetricPayloads:(NSArray<MXMetricPayload *> * _Nonnull)payloads API_AVAILABLE(ios(13.0)) {}
- - (void)didReceiveDiagnosticPayloads:(NSArray<MXDiagnosticPayload *> * _Nonnull)payloads API_AVAILABLE(ios(14.0)) {}
复制代码
3.如果收集URLSession 的监控数据,请实现其代理方法(这个与MetricKit无关): - func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
- print("metrics: \(metrics.transactionMetrics)")
- }
复制代码
|