クラッシュと例外 - iOS SDK

このドキュメントでは、iOS 向け Google アナリティクス SDK v3 を使ったクラッシュと例外の測定についての概要を説明します。

概要

クラッシュと例外の測定では、アプリで発生したクラッシュと例外の数と種類を測定できます。例外には次のフィールドがあります。

フィールド名 トラッカー フィールド 必須 説明
Description kGAIExDescription NSString いいえ 例外の説明で、最大 100 文字です。nil を指定できます。
isFatal kGAIExFatal ブール値 はい 例外が致命的であったかどうかを示します。 YES の場合は致命的です。

クラッシュと例外のデータは、主にクラッシュと例外レポートに表示されます。

捕捉された例外

捕捉された例外とは、アプリの例外ハンドラのコードで定義したエラーです(データのリクエスト時にネットワーク接続のタイムアウトが発生した場合など)。

捕捉された例外を測定するには、トラッカーの例外フィールドに値を設定し、ヒットを送信します。次の例をご覧ください。

/*
 * An app tries to load a list of high scores from the cloud. If the request
 * times out, an exception is sent to Google Analytics
 */
@try {

  // Request some scores from the network.
  NSArray *highScores = [self getHighScoresFromCloud];

}
@catch (NSException *exception) {

    // May return nil if a tracker has not already been initialized with a
    // property ID.
    id tracker = [[GAI sharedInstance] defaultTracker];

    [tracker send:[[GAIDictionaryBuilder
        createExceptionWithDescription:@"Connection timeout"  // Exception description. May be truncated to 100 chars.
                             withFatal:@NO] build]];  // isFatal (required). NO indicates non-fatal exception.
}

捕捉されなかった例外

捕捉されなかった例外は、アプリの実行時に予期しない事態が発生したインスタンス(多くの場合は致命的でアプリがクラッシュしたインスタンス)を表します。捕捉されなかった例外は、Google アナリティクスに自動的に送信できます。それには、trackUncaughtExceptions プロパティの値を YES に設定します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [[GAI sharedInstance] setTrackUncaughtExceptions:YES];
  return YES;
}

自動例外測定を使う場合は、次の点にご注意ください。

  • 自動例外測定を使って送られた例外はすべて、Google アナリティクスで致命的な例外としてレポートされます。
  • Description フィールドは、例外の種類、クラス名、メソッド名、スレッド名を使ってデフォルトで自動的に設定されます。