이 문서에서는 iOS v2용 Google 애널리틱스 SDK를 사용하여 비정상 종료 및 예외 측정을 개략적으로 설명합니다.
개요
비정상 종료 및 예외 측정을 사용하면 앱에서 발생하는 비정상 종료 및 예외의 수와 유형을 측정할 수 있습니다. Google 애널리틱스의 예외는 다음과 같습니다.
-
NSString
(선택사항) 설명: 예외에 관한 설명입니다 (영문 기준 최대 100자).nil
가 허용됩니다. boolean
isFatal – 예외가 치명적인지 여부를 나타냅니다.YES
는 치명적임을 나타냅니다.
비정상 종료 및 예외 데이터는 주로 비정상 종료 및 예외 보고서에서 확인할 수 있습니다.
포착된 예외
포착된 예외는 앱에서 예외 처리 코드를 정의한 오류입니다. 이는 일반적으로 앱을 정상적으로 사용하는 동안 발생할 것으로 예상되는 오류이며 앱에서 복구할 수 있도록 하려는 오류입니다(예: 데이터 요청 중 가끔 네트워크 연결 시간 초과).
예외 처리 코드의 catch
블록에 sendException:
를 추가하여 포착된 예외를 측정할 수 있습니다.
다음 예에서는 앱이 클라우드에서 최고 점수 목록을 로드하려고 합니다. 네트워크 연결 속도가 느려서 요청 시간이 초과되면 Google에서는 사용자를 위해 예외를 처리하기 전에 Google 애널리틱스로 예외를 전송합니다.
@try { NSArray *highScores = [self getHighScores]; } @catch (NSException *exception) { [tracker sendException:NO // Boolean indicates non-fatal exception. withDescription:@"Connection timout %d: %@", connectionError, errorDescription]; }
다음 예시와 같이 sendException:withDescription:withNSException:
를 사용하여 예외의 설명 필드에 이름과 이유를 자동으로 채울 수 있습니다.
@try { NSArray *highScores = [self getHighScores]; } @catch (NSException *exception) { [tracker sendException:NO withNSException:exception); }
오류 도메인, 코드, 설명이 포함된 오류를 자동으로 채우려면 아래와 같이 sendException:withDescription:withNSError:
를 사용합니다.
NSError *error = nil; if (![self updateHighScoresWithError:&error]) { [tracker sendException:NO withNSError:error); }
포착되지 않은 예외 측정
포착되지 않은 예외는 런타임에 앱에 예상치 못한 조건이 발생하여 치명적인 경우가 많아 결과적으로 앱이 비정상 종료되는 경우를 나타냅니다. 포착되지 않은 예외는 sendUncaughtExceptions
속성을 YES
로 설정하여 Google 애널리틱스로 자동으로 전송할 수 있습니다. 이 작업은 앱 대리자의 application:didFinishLaunchingWithOptions
메서드에서 편리하게 수행할 수 있습니다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [GAI sharedInstance].sendUncaughtExceptions = YES; // Enable // ... the rest of your code, include other GAI properties you want to set. }
자동 예외 측정을 사용할 때는 다음 사항에 유의하세요.
- 자동 예외 측정을 사용하여 전송된 모든 예외는 Google 애널리틱스에서 심각한 것으로 보고됩니다.
- 설명 필드는 스택 트레이스를 사용하여 자동으로 채워집니다.