クラッシュと例外 - iOS SDK

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

概要

クラッシュと例外の測定では、アプリで発生したクラッシュと例外の件数と種類を測定できます。Google アナリティクスの例外は、次のもので構成されます。

  • NSString(省略可)説明 - 例外の説明(最大 100 文字)。nil を使用できます。
  • boolean isFatal - 例外が致命的かどうかを示します。 YES は致命的であることを示します。

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

捕捉された例外

キャッチされた例外は、例外処理コードを定義したアプリ内のエラーです。これらのエラーは通常、アプリの通常の使用中に発生し、アプリで回復させたいエラーです(データのリクエスト中にネットワーク接続がタイムアウトすることなど)。

キャッチされた例外を測定するには、例外処理コードの catch ブロックに sendException: を追加します。

次の例では、アプリがクラウドからハイスコアのリストを読み込もうとしています。ネットワーク接続が遅いためにリクエストがタイムアウトした場合は、ユーザーに対して処理する前に、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 アナリティクスで致命的な例外としてレポートされます。
  • 説明フィールドは、スタック トレースを使用して自動的に入力されます。