This commit is contained in:
DDIsFriend
2023-08-23 09:24:40 +08:00
parent 6bd037c5dd
commit 63ca919ed5
494 changed files with 35308 additions and 6623 deletions

View File

@@ -0,0 +1,217 @@
//
// Example
// man
//
// Created by man 11/11/2018.
// Copyright © 2020 man. All rights reserved.
//
import UIKit
class AppInfoViewController: UITableViewController {
@IBOutlet weak var labelVersionNumber: UILabel!
@IBOutlet weak var labelBuildNumber: UILabel!
@IBOutlet weak var labelBundleName: UILabel!
@IBOutlet weak var labelScreenResolution: UILabel!
@IBOutlet weak var labelDeviceModel: UILabel!
@IBOutlet weak var labelCrashCount: UILabel!
@IBOutlet weak var labelBundleID: UILabel!
@IBOutlet weak var labelserverURL: UILabel!
@IBOutlet weak var labelIOSVersion: UILabel!
@IBOutlet weak var labelHtml: UILabel!
@IBOutlet weak var crashSwitch: UISwitch!
@IBOutlet weak var logSwitch: UISwitch!
@IBOutlet weak var networkSwitch: UISwitch!
@IBOutlet weak var webViewSwitch: UISwitch!
@IBOutlet weak var slowAnimationsSwitch: UISwitch!
@IBOutlet weak var naviItem: UINavigationItem!
@IBOutlet weak var rnSwitch: UISwitch!
@IBOutlet weak var uiBlockingSwitch: UISwitch!
var naviItemTitleLabel: UILabel?
//MARK: - init
override func viewDidLoad() {
super.viewDidLoad()
naviItemTitleLabel = UILabel.init(frame: CGRect(x: 0, y: 0, width: 80, height: 40))
naviItemTitleLabel?.textAlignment = .center
naviItemTitleLabel?.textColor = Color.mainGreen
naviItemTitleLabel?.font = .boldSystemFont(ofSize: 20)
naviItemTitleLabel?.text = "App"
naviItem.titleView = naviItemTitleLabel
labelCrashCount.frame.size = CGSize(width: 30, height: 20)
labelVersionNumber.text = CocoaDebugDeviceInfo.sharedInstance().appVersion
labelBuildNumber.text = CocoaDebugDeviceInfo.sharedInstance().appBuiltVersion
labelBundleName.text = CocoaDebugDeviceInfo.sharedInstance().appBundleName
labelScreenResolution.text = "\(Int(CocoaDebugDeviceInfo.sharedInstance().resolution.width))" + "*" + "\(Int(CocoaDebugDeviceInfo.sharedInstance().resolution.height))"
labelDeviceModel.text = "\(CocoaDebugDeviceInfo.sharedInstance().getPlatformString)"
labelBundleID.text = CocoaDebugDeviceInfo.sharedInstance().appBundleID
labelserverURL.text = CocoaDebugSettings.shared.serverURL
labelIOSVersion.text = UIDevice.current.systemVersion
if UIScreen.main.bounds.size.width == 320 {
labelHtml.font = UIFont.systemFont(ofSize: 15)
}
logSwitch.isOn = CocoaDebugSettings.shared.enableLogMonitoring
networkSwitch.isOn = !CocoaDebugSettings.shared.disableNetworkMonitoring
rnSwitch.isOn = CocoaDebugSettings.shared.enableRNMonitoring
webViewSwitch.isOn = CocoaDebugSettings.shared.enableWKWebViewMonitoring
slowAnimationsSwitch.isOn = CocoaDebugSettings.shared.slowAnimations
crashSwitch.isOn = CocoaDebugSettings.shared.enableCrashRecording
uiBlockingSwitch.isOn = CocoaDebugSettings.shared.enableUIBlockingMonitoring
logSwitch.addTarget(self, action: #selector(logSwitchChanged), for: UIControl.Event.valueChanged)
networkSwitch.addTarget(self, action: #selector(networkSwitchChanged), for: UIControl.Event.valueChanged)
rnSwitch.addTarget(self, action: #selector(rnSwitchChanged), for: UIControl.Event.valueChanged)
webViewSwitch.addTarget(self, action: #selector(webViewSwitchChanged), for: UIControl.Event.valueChanged)
slowAnimationsSwitch.addTarget(self, action: #selector(slowAnimationsSwitchChanged), for: UIControl.Event.valueChanged)
crashSwitch.addTarget(self, action: #selector(crashSwitchChanged), for: UIControl.Event.valueChanged)
uiBlockingSwitch.addTarget(self, action: #selector(uiBlockingSwitchChanged), for: UIControl.Event.valueChanged)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let count = UserDefaults.standard.integer(forKey: "crashCount_CocoaDebug")
labelCrashCount.text = "\(count)"
labelCrashCount.textColor = count > 0 ? .red : .white
}
//MARK: - alert
func showAlert() {
let alert = UIAlertController.init(title: nil, message: "You must restart APP to ensure the changes take effect", preferredStyle: .alert)
let cancelAction = UIAlertAction.init(title: "Restart later", style: .cancel, handler: nil)
let okAction = UIAlertAction.init(title: "Restart now", style: .destructive) { _ in
exit(0)
}
alert.addAction(cancelAction)
alert.addAction(okAction)
alert.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
alert.popoverPresentationController?.sourceView = self.view
alert.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
self.present(alert, animated: true, completion: nil)
}
//MARK: - target action
@objc func slowAnimationsSwitchChanged(sender: UISwitch) {
CocoaDebugSettings.shared.slowAnimations = slowAnimationsSwitch.isOn
// self.showAlert()
}
@objc func uiBlockingSwitchChanged(sender: UISwitch) {
CocoaDebugSettings.shared.enableUIBlockingMonitoring = uiBlockingSwitch.isOn
if uiBlockingSwitch.isOn == true {
WindowHelper.shared.startUIBlockingMonitoring()
} else {
WindowHelper.shared.stopUIBlockingMonitoring()
}
}
@objc func crashSwitchChanged(sender: UISwitch) {
CocoaDebugSettings.shared.enableCrashRecording = crashSwitch.isOn
self.showAlert()
}
@objc func networkSwitchChanged(sender: UISwitch) {
CocoaDebugSettings.shared.disableNetworkMonitoring = !networkSwitch.isOn
self.showAlert()
}
@objc func logSwitchChanged(sender: UISwitch) {
CocoaDebugSettings.shared.enableLogMonitoring = logSwitch.isOn
self.showAlert()
}
@objc func rnSwitchChanged(sender: UISwitch) {
CocoaDebugSettings.shared.enableRNMonitoring = rnSwitch.isOn
self.showAlert()
}
@objc func webViewSwitchChanged(sender: UISwitch) {
CocoaDebugSettings.shared.enableWKWebViewMonitoring = webViewSwitch.isOn
self.showAlert()
}
}
//MARK: - UITableViewDelegate
extension AppInfoViewController {
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
if section == 0 {
return 56
}
return 38
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
if indexPath.section == 1 && indexPath.row == 4 {
if labelserverURL.text == nil || labelserverURL.text == "" {
return 0
}
}
return 44
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
tableView.deselectRow(at: indexPath, animated: true)
if indexPath.section == 1 && indexPath.row == 2 {
UIPasteboard.general.string = CocoaDebugDeviceInfo.sharedInstance().appBundleName
let alert = UIAlertController.init(title: "copied bundle name to clipboard", message: nil, preferredStyle: .alert)
let action = UIAlertAction.init(title: "OK", style: .cancel, handler: nil)
alert.addAction(action)
alert.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
alert.popoverPresentationController?.sourceView = self.view
alert.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
self.present(alert, animated: true, completion: nil)
}
if indexPath.section == 1 && indexPath.row == 3 {
UIPasteboard.general.string = CocoaDebugDeviceInfo.sharedInstance().appBundleID
let alert = UIAlertController.init(title: "copied bundle id to clipboard", message: nil, preferredStyle: .alert)
let action = UIAlertAction.init(title: "OK", style: .cancel, handler: nil)
alert.addAction(action)
alert.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
alert.popoverPresentationController?.sourceView = self.view
alert.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
self.present(alert, animated: true, completion: nil)
}
if indexPath.section == 1 && indexPath.row == 4 {
if labelserverURL.text == nil || labelserverURL.text == "" {return}
UIPasteboard.general.string = CocoaDebugSettings.shared.serverURL
let alert = UIAlertController.init(title: "copied server to clipboard", message: nil, preferredStyle: .alert)
let action = UIAlertAction.init(title: "OK", style: .cancel, handler: nil)
alert.addAction(action)
alert.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
alert.popoverPresentationController?.sourceView = self.view
alert.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
self.present(alert, animated: true, completion: nil)
}
}
}