2012年8月19日日曜日

Google Analytics SDK for Android v2 を訳してみた④「クラッシュと例外」

チームEggの赤峰です。

Google Analytics V2のβ版の翻訳第4段です。
libGoogleAnalyticsV2.jarの使い方が書かれています。
今回はクラッシュと例外のトラッキングについてです。 原文はこちらです。
  Google Analytics V2 - Crashes and Exceptions(原文)

キャンペーントラッキング

このSDKは、β版のGoogle Mobile App Analyticsです。
興味ある方はある方は、サインアップしてβ版にアクセスしてください。


このドキュメントでは、Android用Google AnalyticsのSDKを使用して、クラッシュや例外データ収集の高レベルな概要を提供します。

(項目)
概要
キャッチされた例外
キャッチされない例外(クラッシュ)
 EasyTrackerの使用
 ExceptionReporterの使用
 ExceptionParserの使用


[概要]
-------------------------------
例外のトラッキングには、あなたのアプリで発生したキャッチまたはキャッチされていないクラッシュや例外の数や種類に関するデータを収集することができます。Google Analyticsでの例外の構成
  • String (省略可な)Description - 例外の説明(最大100文字)。nullを受け付けます。
  • boolean isFatal - 例外が致命的かどうかを示します。trueは致命的を表します。
クラッシュと例外データは、CrashやExceptionレポートで主に使用可能です。


[キャッチされた例外]
-------------------------------
キャッチした例外は、例外処理コードを定義しているあなたのアプリケーションのエラーです。これらは一般的に、あなたのアプリケーションの通常の使用時に発生することが予想され、アプリケーションがデータの要求時にネットワーク接続のタイムアウトのように回復してほしいエラーです。

trackException()をあなたの例外処理コードのcatchブロックに加えることにより、つかまえた例外を追跡することができます。

次の例では、アプリケーションがクラウドからハイスコアのリストをロードしようとします。おそらく要求がタイムアウトすると、低速のネットワーク接続による場合は、ユーザーのためにそれを処理する前にGoogle Analyticsを使用した例外を追跡します:
try {
  ArrayList highScores = getHighScores(); // クラウドからスコアを取得します
  } catch (IOException e) {
  Tracker myTracker = EasyTracker.getTracker(); // トラッカーの参照を取得します
  myTracker.trackException(e.getMessage(), false); // false は致命的でない例外です

  ... // ハイスコアは、現在使用できないことをユーザーに警告が表示されます
}


[キャッチされない例外のトラッキング]
-------------------------------
キャッチされない例外は、アプリケーションが実行時に予期しない条件が発生し、アプリがその結果クラッシュする原因となるしばしば致命的なインスタンスを表します。キャッチされていない例外はEasyTrackerまたはExceptionReporterクラスを使用して自動的に追跡することができます。

EasyTrackerの使用


自動的にEasyTrackerを使用してアプリケーション内のすべてのキャッチされない例外を追跡するために、あなたのanalytics.xmlファイルに次の行を追加します。
<bool name="ga_reportUncaughtExceptions">true</bool>

自動例外トラッキングを使用して例外をトラッキングした後、EasyTrackerはスレッドのデフォルトの例外ハンドラに例外を渡します。

自動例外トラッキングを使用する場合は、次の注意をしてください:
  • 自動例外トラッキングを経由してトラッキングするすべての例外は、Google Analyticsに致命的なものとして報告されます。
  • 自動的にスタックトレースを使用して、説明フィールドに追加されます。

ExceptionReporterの使用


EasyTrackerを使用していない場合、自動キャッチされない例外処理を実装するために、ExceptionReporterクラスを使用してください。これはEasyTrackerがその自動例外レポートを処理するために実装されているものと同じクラスです。

ExceptionReporterはあなたのアプリケーション内の特定のスレッドまたはすべてのスレッドのいずれかの標準のキャッチされない例外ハンドラとして使用できます。例外をトラッキングした後、ExceptionReporterクラスは、例外をあなたが提供するキャッチされない例外ハンドラーに、任意に渡すことができます。

次のコードは、新しいExceptionReporterオブジェクトを作成し、新しいデフォルトのキャッチされない例外ハンドラとして設定します。結果として、すべてのキャッチされない例外がトラッキングされると、前のキャッチされない例外ハンドラに渡されます。ほとんどのアプリケーションでは、デフォルトのハンドラが例外をログに記録し、アプリケーションを終了します。
UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,                                        // 現在のトラッカーを使用
    GoogleAnalytics.getInstance(),                    // GoogleAnalyticsのシングルトン
    Thread.getDefaultUncaughtExceptionHandler());     // 現在のデフォルトキャッチされない例外ハンドラ

Thread.setDefaultUncaughtExceptionHandler(myHandler); // デフォルトキャッチされない例外ハンドラを作ります。

ExceptionParserの使用


SDKは、キャッチされない例外をトラッキングするときに、スタックトレースから最も関連する説明を取得するために実装するExceptionParserインタフェースを提供します。ExceptionParserインタフェースは一つのメソッド(getDescription(String threadName, Throwable t))を持っています。

この例のようにsetExceptionParser(ExceptionParser parser)を呼び出すことによって、キャッチされない例外をトラッキングするときにExceptionParserを使用するようにトラッカーを設定することができます。
// myParserはExceptionParser実装クラスを表します。
ExceptionParser parser = new myParser(context);

// myTrackerはトラッカーのインスタンスです。
myTracker.setExceptionParser(parser);

あなたのトラッカーが、任意のトラッキングされたキャッチされない例外の説明フィールドに追加するには、パーサのgetDescription()メソッドを使用します。


次回はディスパッチを翻訳します。

0 件のコメント:

コメントを投稿