美文网首页MetricKit
MetricKit框架详细解析(十一) —— 基于MetricK

MetricKit框架详细解析(十一) —— 基于MetricK

作者: 刀客传奇 | 来源:发表于2021-05-17 09:58 被阅读0次

版本记录

版本号 时间
V1.0 2021.05.17 星期一

前言

MetricKit由iOS13系统进引入,用来汇总和分析有关异常和崩溃诊断以及电源和性能指标的每个设备的报告。下面我们就一起来看下这个框架。感兴趣的可以看下面几篇文章。
1. MetricKit框架详细解析(一) —— 基本概览(一)
2. MetricKit框架详细解析(二) —— Improving Your App's Performance(一)
3. MetricKit框架详细解析(三) —— Reducing Your App's Memory Use(一)
4. MetricKit框架详细解析(四) —— Gathering Information About Memory Use(一)
5. MetricKit框架详细解析(五) —— Making Changes to Reduce Memory Use(一)
6. MetricKit框架详细解析(六) —— Preventing Memory-Use Regressions & Responding to Low-Memory Warnings(一)
7. MetricKit框架详细解析(七) —— Reducing Your App's Launch Time(一)
8. MetricKit框架详细解析(八) —— Reducing Disk Writes(一)
9. MetricKit框架详细解析(九) —— Improving App Responsiveness(一)
10. MetricKit框架详细解析(十) —— 基于MetricKit的App中的电源监控,性能和诊断(一)

源码

1. Swift

首先看下工程组织结构:

下面就是源码了

1. AppDelegate.swift
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?
}
2. ShoppingListTableViewController.swift
import UIKit
import MetricKit

class ShoppingListTableViewController: UITableViewController {
  let fruit = ["🍏 Apples", "🍌 Bananas", "🍓 Strawberries"]
    let fruitsLogHandle = MXMetricManager.makeLogHandle(category: "Fruits")

  override func viewDidLoad() {
    super.viewDidLoad()

    let metricManager = MXMetricManager.shared
    metricManager.add(self)

        mxSignpost(.event, log: fruitsLogHandle, name: "Loading Fruits TableViewController")
  }

  override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    cell.textLabel?.text = fruit[indexPath.row]
    return cell
  }

  override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return fruit.count
  }
}

extension ShoppingListTableViewController: MXMetricManagerSubscriber {
  func didReceive(_ payloads: [MXMetricPayload]) {
    guard let firstPayload = payloads.first else { return }
        print(firstPayload.dictionaryRepresentation())
    }

    func didReceive(_ payloads: [MXDiagnosticPayload]) {
        guard let firstPayload = payloads.first else { return }
        print(firstPayload.dictionaryRepresentation())
    }
}

后记

本篇主要讲述了基于MetricKit的App中的电源监控,性能和诊断,感兴趣的给个赞或者关注~~~

相关文章

网友评论

    本文标题:MetricKit框架详细解析(十一) —— 基于MetricK

    本文链接:https://www.haomeiwen.com/subject/ehmrjltx.html