투케이2K

122. (TWOK/UTIL) [Ios/Swift] S_MetricManager - 앱 성능 분석 지표 확인 클래스 - MetricKit 본문

투케이2K 유틸파일

122. (TWOK/UTIL) [Ios/Swift] S_MetricManager - 앱 성능 분석 지표 확인 클래스 - MetricKit

투케이2K 2024. 2. 4. 02:19

[설 명]

프로그램 : Ios / Swift

설 명 : S_MetricManager - 앱 성능 분석 지표 확인 클래스 - MetricKit

 

[소스 코드]

 

import Foundation
import UIKit
// ----------------------------------
// MARK: - [디바이스 성능 분석]
// ----------------------------------
import MetricKit
// ----------------------------------

final class S_MetricManager: NSObject, MXMetricManagerSubscriber {
    
    
    /**
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * TODO [클래스 설명]
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * 1. 앱 성능 측정 분석 확인 클래스
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * 2. 사용 방법 : AppDelegate : import MetricKit
     *
     * // [전역 변수]
     * var metricManager: S_MetricManager? // [앱 성능 분석 매니저]
     *
     *
     * // [애플리케이션 동작 수행]
     * func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
     *      self.metricManager = S_MetricManager()
     * }
     *
     *
     * // [애플리케이션 작업 태스트 날림]
     * func applicationWillTerminate(_ application: UIApplication) {
     *          if self.metricManager != nil {
     *              self.metricManager?.pauseMetricReport()
     *          }
     * }
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * */





    /**
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * //  TODO [빠른 로직 찾기 : 주석 로직 찾기]
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     *
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     *
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     *
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     *
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * */







    // -----------------------------------------------------------------------------------------
    // MARK: - [전역 변수 선언 실시]
    // -----------------------------------------------------------------------------------------
    private static let ACTIVITY_NAME = "S_MetricManager"
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: - [클래스 생성자 초기화]
    // -----------------------------------------------------------------------------------------
    override init() {
        super.init()
        S_Log._D_(description: "앱 성능 측정 분석 : init : 초기화 수행", data: nil)

        MXMetricManager.shared.add(self)
    }
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: - [클래스 메모리 할당 해제]
    // -----------------------------------------------------------------------------------------
    deinit {
        S_Log._D_(description: "앱 성능 측정 분석 : deinit : 메모리 할당 해제", data: nil)

        MXMetricManager.shared.remove(self)
    }
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: - [앱 성능 분석 측정 종료]
    // -----------------------------------------------------------------------------------------
    func pauseMetricReport() {
        S_Log._D_(description: "앱 성능 측정 분석 : pauseMetricReport : 측정 종료", data: nil)

        MXMetricManager.shared.remove(self)
    }
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: - [앱 성능 분석 지표 확인 Receive 메소드] : [MXMetricPayload]
    // -----------------------------------------------------------------------------------------
    func didReceive(_ payloads: [MXMetricPayload]) {
        
        if payloads != nil && payloads.isEmpty == false && payloads.count > 0 {
           
            for payload in payloads {
                S_Log._D_(description: "앱 성능 분석 지표 : MXMetricPayload", data: [payload.dictionaryRepresentation().description])
            }
            
        }
    }
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: - [앱 성능 분석 지표 확인 Receive 메소드] : [MXDiagnosticPayload]
    // -----------------------------------------------------------------------------------------
    @available(iOS 14.0, *)
    func didReceive(_ payloads: [MXDiagnosticPayload]) {
        
        if payloads != nil && payloads.isEmpty == false && payloads.count > 0 {
        
            for payload in payloads {
                S_Log._D_(description: "앱 성능 분석 지표 : MXDiagnosticPayload", data: [payload.dictionaryRepresentation().description])
            }
            
        }
    }
    
    
} // [클래스 종료]

 

반응형
Comments