Notice
Recent Posts
Recent Comments
Link
투케이2K
411. (ios/swift5) [MetricKit] 메트릭 킷 사용해 앱 성능 분석 지표 확인 - MXMetricManagerSubscriber 본문
IOS
411. (ios/swift5) [MetricKit] 메트릭 킷 사용해 앱 성능 분석 지표 확인 - MXMetricManagerSubscriber
투케이2K 2024. 2. 4. 02:15[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[호출 방법 : 소스 코드]
/**
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 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()
* }
* }
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* */
[S_MetricManager : 소스 코드]
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])
}
}
}
} // [클래스 종료]
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments