Crash SDK設定
IMQA Crashには様々なオプションが存在します。ユーザーが希望する設定を追加することで、より詳細なクラッシュレポートを受け取ることができます。
1. Custom Crash発生
IMQA Crash Agent で以下のようなユーザー定義エラーを収集することができます。Exceptionオブジェクトといっしょに特定のタグ、エラーランクを指定することができます。
try {
...
} catch (SomeException e) {
IMQACrashAgent.SendException(e, "ERROR TAG", ErrorRank.Major);
}
エラーランクは特に定められていないため、アプリの構成によって変更して使用することができます。
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エラー分析のためにエラーメッセージを指定することをお勧めします。
エラーメッセージを指定した場合、同じエラータイプであっても別のエラーとして収集されます。
...
// 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
ユーザーが設定したエラータイプです。
EvalError
eval()で発生するエラーです。
RangeError
変数の有効な範囲を外れた場合に作成されるエラーです。
ReferenceError
誤った参照をした場合に作成されるエラーです。
SyntaxError
誤った構文がある場合のエラーです。
TypeError
有効なデータ型でない場合におけるタイプのエラーです。
URIError
encodeURI()やdecodeURI()の関数に無効なパラメーターを渡した場合に作成されるエラーです。
AggregateError
複数のエラーを一つのエラーで包むエラータイプです。
3. EventPath登録
EventPathは、ユーザーのデバイスでアプリがどのようなルートで動作するかを把握するための機能です。これを使用するためには、クラスにEventPath追跡コードを入れる必要があります。追跡コードに「STEP」と「LABEL」に該当する内容を入れてください。
収集するコールスタックの段階、当該ステップのクラス名、関数名、コール位置を取り込みます。
収集されたEventPathの別称、クラッシュ情報ウィンドウにEventPathの各発生位置を別称で表示します。
public void onClickSomething() {
EventPathManager.CreateEventPath(STEP, LABEL);
}
4. Custom User ID登録
クラッシュ発生時にユーザーを区分するためのカスタムしたIDを与えることができます。ユーザー情報を登録すると、発生するクラッシュにユーザー情報が含まれて表示されます。
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個)
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を利用して変更することができます。
IMQAOption
setDirectUploadFlag(BOOL)
アップロードモードを設定します。Falseに設定すると、debug modeでも動作します。
IMQAOption
setPrintLog(BOOL)
Log出力状態を設定します。Trueに設定すると、 IMQAのLogが出力されます。
IMQAOption
setAnrOn(BOOL)
ANRのモニタリング状態を設定します。Falseに設定すると、ANRはクラッシュ収集から除外されます。
IMQAOption
setAnrTimeoutIntercal(int)
ANRタイムアウトが発生する時間を設定します。(milliseconds単位)
@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