MPM 설정

iOS MPM SDK 설정 방법을 한눈에 확인하실 수 있습니다

1. 상세 설정

iOS MPM 프레임워크에는 다양한 설정을 지원하고 있습니다.

수집 주기 설정

IMQA MPM 프레임워크가 데이터를 저장하는 주기와 수집하는 주기에 대해서 초 단위로 설정할 수 있습니다.

  • Objective-C 설정 방법

AppDelegate.m
IMQAConfig* mpmConfig = [[IMQAConfig alloc] init:@"PROJECT_KEY"];
mpmConfig.dump_interval = 10; // 성능 데이터 덤프를 뜨는 주기 (sec)
mpmConfig.save_interval = 60; // 성능 데이터를 수집서버로 전송하는 주기 (sec)
  • Swift 설정 방법

AppDelegate.swift
let mpmConfig = IMQAConfig("<PROJECT_KEY>")
mpmConfig.dump_interval = 10 // 성능 데이터 덤프를 뜨는 주기 (sec)
mpmConfig.save_interval = 60 // 성능 데이터를 수집서버로 전송하는 주기 (sec)

설치형 고객사 수집 서버 설정

설치형으로 진행 된 고객사에서는 반드시 이 부분 설정이 필요합니다.

IMQA MPM 프레임워크가 수집하는 데이터를 보내는 수집 서버를 별도로 설정하실 수 있습니다. 기본적으로는 SaaS 서비스를 이용하는 고객은 별도 설정이 필요하지 않습니다.

  • Objective-C 설정 방법

AppDelegate.m
NSString* imqaUrl = @"https://custom-url"; 
IMQAConfig* mpmConfig = [[IMQAConfig alloc] init:PROJECT_KEY]; 
mpmConfig.api_url = imqaUrl;
  • Swift 설정 방법

AppDelegate.swift
let imqaUrl = "https://custom-url" 
let mpmConfig = IMQAConfig(PROJECT_KEY) 
mpmConfig.api_url = imqaUrl

네트워크 수집 설정

IMQA MPM 프레임워크에서는 네트워크 수집에 대해서 수집 여부를 설정 할 수 있습니다. 또한, 특정 URL 에 대한 수집을 무시할 수 있는 기능을 제공하고 있어, 보안이 필요한 URL은 무시 할 수 있습니다.

  • Objective-C 설정 방법

AppDelegate.m
IMQAConfig* mpmConfig = [[IMQAConfig alloc] init:@"PROJECT_KEY"];
mpmConfig.useNetworkCollect = YES; // YES: 수집함, NO: 수집안함
mpmConfig.blacklistUrls = @[@"https://url1.com", @"http://url.com"]; // 특정 URL 무시 Array
  • Swift 설정 방법

AppDelegate.swift
let mpmConfig = IMQAConfig("<PROJECT_KEY>")
mpmConfig.useNetworkCollect = true // true: 수집함 ,  false: 수집안함
mpmConfig.blacklistUrls = ["https://url1.com", "http://url.com"] // 특정 URL 무시 Array

수집 데이터 확인

IMQA MPM 프레임워크에서 수집하고 있는 데이터가 궁금한 경우 자체 옵션을 통해서 데이터를 Console 로 확인 하실 수 있습니다.

  • Objective-C 설정 방법

AppDelegate.m
IMQAConfig* mpmConfig = [[IMQAConfig alloc] init:@"PROJECT_KEY"];
mpmConfig.downloadDumpData = YES;
  • Swift 설정 방법

AppDelegate.swift
let mpmConfig = IMQAConfig("<PROJECT_KEY>")
mpmConfig.downloadDumpData = true

2. WKWebView 설정

IMQA MPM 프레임워크는 WKWebView에 대해서 성능 정보도 수집하고 있습니다. UIWebView는 Apple사의 정책으로 인해 지원하고 있지 않은 점 참고 바랍니다.

Web Server (HTML) 설정

WKWebView 데이터 수집을 원한다면 웹 페이지에 IMQA WebView JavaScript라이브러리를 삽입해 주어야 합니다. 원하는 경우 파일을 다운로드 받아 웹 페이지에서 직접 경로를 추가하여 사용 할 수 있습니다.

MPM / WPM 통합 사용시 Agent 설치 방법은 ‘IMQA WPM/WCrash 설치 가이드 > 1.2. WPM / MPM 통합 사용 (WebAgent + WebviewAgent 설치)'를 참고하세요.

page.html
<!-- IMQA Webview Agent (1.1.5버전 이상. 항상 최신 버전으로 업데이트) 입니다. -->
<script type="text/javascript" src="https://cdn.imqa.io/agent/webview-agent.js"
crossorigin></script>

<script>
    ((w, c, _wv, _w, _wk, _mh, _b) => {        
       w[_wv](w); // 웹뷰 에이전트 실행함수
    })(window, 'imqaClientConfig', 'IMQAWebviewMain', 'IMQAWebMain', 'webkit', 'messageHandlers', 'ImqaBridge')
</script>
<!-- IMQA Webview Agent(1.1.3버전 이하) 입니다. -->
<script type="text/javascript" src="https://imqawebviewagent.blob.core.windows.net/agent/webview-agent-1.1.2.js"
crossorigin></script>

// min 파일로 적용하고 싶을 경우
<script type="text/javascript" src="https://imqawebviewagent.blob.core.windows.net/agent/webview-agent-1.1.2.min.js"
crossorigin></script>

iOS 프로젝트 설정

성능 수집이 필요한 WebView에 아래와 같은 설정이 필요합니다. 또한 WebView 에서 발생한 에러 정보를 수집할 수 있습니다. Webview Crash 수집을 위해서는 ImqaBridgeCrash 를 추가해 주어야 합니다.

  • Objective-C 설정 방법

ViewController.m
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
   // IMQA 설정 부분
   if([message.name isEqual: @"ImqaBridge"]) {
        [[IMQAMpm sharedInstance] saveWebviewPostMessage:self :message.body];
   }
   // 추가 설정 코드 (Webview Agent (1.1.2버전 이상) WebView Crash 수집)
   if(message.name == "ImqaBridgeCrash") {
    IMQACrash.notifyWebCrash("\(message.body)")
   }
}

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURL* url = [[NSURL alloc] initWithString:@""];
    NSURLRequest* reqeust = [[NSURLRequest alloc] initWithURL:url];
    [_webView loadRequest:request];
    [_webView.configuration.userContentController addScriptMessageHandler:self           name:@"ImqaBridge"];
}
  • Swift 설정 방법

ViewController.swift
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    // IMQA 설정 부분
    if(message.name == "ImqaBridge") {
        IMQAMpm.sharedInstance.saveWebviewPostMessage(self,"\(message.body)")
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    let request = URLRequest(url: URL(string: url)!) webView.load(request)

    // IMQA 설정 부분
    webView.configuration.userContentController.add(self, name: "ImqaBridge")
}

3. 네트워크 수집 (NSURLSession 또는 URLSession 을 사용하는 경우)

NSURLSession 또는 URLSession을 이용하여 네트워크를 통신하는 경우에 일부 상황에서 네트워크 수집을 위해 설정이 필요합니다.

  • Objective-C 설정 방법

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration]; // or default
configuration.protocolClasses = [[IMQAMpm sharedInstance] imqaURLSessionProtocol];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
  • Swift 설정 방법

let configuration = URLSessionConfiguration.ephemeral // or default
configuration.protocolClasses = IMQAMpm.sharedInstance.imqaURLSessionProtocol()
let session = URLSession.init(configuration: configuration)

4. dSYM 설정

iOS의 Symbolication(기호화) 적용이 된 앱의 경우, dSYM 설정을 통해 클래스 명과 함수 명을 확인할 수 있습니다.

매핑 파일 업로드 1. [파일 선택]을 클릭하여 ‘dSYM’ 패키지 안의 바이너리 파일을 선택합니다.

2. 적용할 앱 버전을 입력하고 [등록]을 클릭합니다. 3. 데이터의 클래스 명과 함수 명을 IMQA에서 확인할 수 있습니다.

등록된 매핑 파일 등록된 매핑 파일과 적용된 앱 버전, 업로드 시간을 확인할 수 있습니다.

매핑 파일 관리 [삭제] 아이콘을 클릭하면 해당 매핑 파일을 삭제합니다.

최신 앱 버전이 릴리즈 된 경우, 해당 버전에서 발생한 크래시 정보를 보기 위해서는 동일한 앱 버전의 매핑 파일을 추가 등록해 주세요.

Last updated