Crash SDK設定

IMQA Crashには様々なオプションが存在します。ユーザーが希望する設定を追加することで、より詳細なクラッシュレポートを受け取ることができます。

1. Custom Crash発生

IMQA Crash Agent で以下のようなユーザー定義エラーを収集することができます。Exceptionオブジェクトといっしょに特定のタグ、エラーランクを指定することができます。

 try {
  ...
} catch (SomeException e) {
  IMQACrashAgent.SendException(e, "ERROR TAG", ErrorRank.Major);
}

エラーランクは特に定められていないため、アプリの構成によって変更して使用することができます。

Rank
Description

ErrorRank.Unhandle

基本のエラーランクに分類できないクラッシュに使用

ErrorRank.Critical

アプリに大きな影響を与えるクラッシュ

ErrorRank.Major

アプリに影響を与えるクラッシュ

ErrorRank.Minor

アプリにほとんど影響を与えないクラッシュ

2. Custom Web Crash 発生

IMQA Webview Agentでは、詳細なWebエラー分析に必要なエラーメッセージを指定してカスタムエラーを収集できます。

Webview Crash 収集のためには CrashWebviewBridge を追加する必要があります。 「Android > MPM SDK設定 > WebView HTTPリクエスト > Android Agent設定」を参照してください。

カスタムエラーの生成

IMQA Crash は、ユーザーが定義したエラーを検出して収集します。

他のエラーであっても同じエラータイプの場合、同じエラーとして認識してエラーが蓄積することがあります。

カスタムエラーメッセージの指定

WebViewが収集するデフォルトのエラーメッセージを目的のエラーメッセージに変更して収集できます。 詳細なWebエラー分析のためにエラーメッセージを指定することをお勧めします。

エラーメッセージを指定した場合、同じエラータイプであっても別のエラーとして収集されます。

js files to collect custom errors
...
// When using try-catch
try {
	...
}
catch(e){
	throw new Error("Custom error messages");
}

// When to generate default errors
new Error("Custom error messages");

以下のように、IMQA Crash サービスで Web クラッシュを詳細な情報とともに確認できます。

❶ キャッチされたエラーインスタンス Webビューでエラーが生成された場合は、そのエラーのキャッチされたエラーインスタンス名を表示します。

❷ ユーザー定義のエラーメッセージ 特定のエラータイプのエラーが作成されるとき、ユーザーが指定したメッセージを表示します。

throw new Error("Custom error messages");

❸ エラータイプ / コードの行番号 Webビューエラーの種類と当該エラーの行番号を確認することができます。

Error Type
Description

Error

ユーザーが設定したエラータイプです。

EvalError

eval()で発生するエラーです。

RangeError

変数の有効な範囲を外れた場合に作成されるエラーです。

ReferenceError

誤った参照をした場合に作成されるエラーです。

SyntaxError

誤った構文がある場合のエラーです。

TypeError

有効なデータ型でない場合におけるタイプのエラーです。

URIError

encodeURI()decodeURI()の関数に無効なパラメーターを渡した場合に作成されるエラーです。

AggregateError

複数のエラーを一つのエラーで包むエラータイプです。

3. EventPath登録

EventPathは、ユーザーのデバイスでアプリがどのようなルートで動作するかを把握するための機能です。これを使用するためには、クラスにEventPath追跡コードを入れる必要があります。追跡コードに「STEP」と「LABEL」に該当する内容を入れてください。

STEP
LABEL

収集するコールスタックの段階、当該ステップのクラス名、関数名、コール位置を取り込みます。

収集されたEventPathの別称、クラッシュ情報ウィンドウにEventPathの各発生位置を別称で表示します。

public void onClickSomething() {
      EventPathManager.CreateEventPath(STEP, LABEL);
  }

4. Custom User ID登録

クラッシュ発生時にユーザーを区分するためのカスタムしたIDを与えることができます。ユーザー情報を登録すると、発生するクラッシュにユーザー情報が含まれて表示されます。

Class Name
Method Name
Description

IdentifierCollector

setUserId(STRING)

ユーザーIDを登録してください。

IdentifierCollector

setUserName(STRING)

ユーザー名を登録してください。

IdentifierCollector

setUserMail(STRING)

ユーザーのEメールアドレスを登録してください。

IdentifierCollector.setUserId("10"); // Register a user ID.
IdentifierCollector.setUserName("My User Name"); // Register a user name.
IdentifierCollector.setUserMail("My User Email"); // Register a user email.

5. Custom User Log/Key登録

クラッシュが発生する前に、希望するログを開発者が直接追加して残すことができます。(最大100個)

Class Name
Method Name
Description

CustomLogCollector

log(STRING)

ログを一般的な文字列として残します。

CustomLogCollector

log(KEY, VALUE)

ログをキー:値形式で残します。

CustomLogCollector.log("test log"); // Leaves the log as a plain string.
CustomKeyCollector.log("My Key", "My Log"); // Leaves the log in the form of key:value.

6. 初期化Option追加

IMQAController初期化時のオプションを指定することができます。IMQA CrashモードをパラメータやOptionを利用して変更することができます。

Class Name
Method Name

IMQAOption

setDirectUploadFlag(BOOL)

アップロードモードを設定します。Falseに設定すると、debug modeでも動作します。

IMQAOption

setPrintLog(BOOL)

Log出力状態を設定します。Trueに設定すると、 IMQAのLogが出力されます。

IMQAOption

setAnrOn(BOOL)

ANRのモニタリング状態を設定します。Falseに設定すると、ANRはクラッシュ収集から除外されます。

IMQAOption

setAnrTimeoutIntercal(int)

ANRタイムアウトが発生する時間を設定します。(milliseconds単位)

MyApplication.java
@Override
public void onCreate() {
    super.onCreate();
      
    io.imqa.core.IMQAOption imqaOption = new io.imqa.core.IMQAOption();

    /*  
     * Default value: true
     * Sets whether to collect ANR information. 
     * true: Monitors the ANR occurrence status.
     * false: Stops monitoring ANR occurrence.
    */
    imqaOption.setAnrOn(false);


    /*
     * Default value : 5000
     * anrTimeoutInveral : Sets the time when ANR timeout occurs (in milliseconds.)
     */
    imqaOption.setAnrTimeoutInterval(5000);


   /*
     * Default value : false
     * Sets whether to output the log. 
     * true: Outputs the IMQA Crash log.
    */
    imqaOption.setPrintCrashLog(true);

    /*
     * Default value : true
     * Uploads collected crash information as soon as the crash occurs.
     * true: Uploads as soon as the crash occurs.
     * false: Uploads when executing again after saving.
    */
    imqaOption.setCrashDirectUploadFlag(false);

    /*
     * Default value : false
     * Set the compression algorithm.
     * true : Using Zstandard (Zstd).
     * false : Using gzip algorithm
    */
    imqaOption.setCompressZstd(true);

    /*
     * Default value : 'https://collector.imqa.io'
     * Sets the crash server URL.
     * String: Server information
     */
    imqaOption.setCrashServerUrl('https://collector.imqa.io');

    io.imqa.crash.IMQACrashAgent.InitializeAndStartSession(
        this, // Application Context
        BuildConfig.FLAVOR, // Project Flavor Setting
        "PROJECT_KEY",  // Issued project key
        imqaOption // Add an object when the option is set.
    );
}

Last updated