위와 같이 Agent 웹 크래시 수집 제한 설정시, IMQA Crash, WCrash에서 에러명에 "$" 또는 "type"이 포함된 웹 크래시는 수집되지 않습니다.
"type"이 포함된 에러명 예시
4. EventPath 등
EventPath는 사용자의 기기에서 앱이 어떤 경로로 동작하는지 파악하는 기능입니다. 이를 사용하기 위해서는 클래스에 EventPath 추적 코드를 넣어주어야 합니다. 추적코드에 ‘STEP’ 과 ‘LABEL’에 해당되는 내용을 넣어줍니다.
STEP
LABEL
수집할 콜스택의 단계, 해당 스텝의 클래스명, 함수이름, 호출 위치를 가지고 옵니다.
수집된 EventPath 의 별칭, 크래시 정보 창에서 EventPath의 각 발생 위치를 별칭으로 보여줍니다.
5. Custom User ID 등록
크래시 데이터 수집 시 특정 사용자를 식별하기 위한 ID 정보를 설정할 수 있습니다. 사용자 ID 정보를 설정한 후, Crash 에러 목록 에서 사용자 ID 정보로 에러를 조회할 수 있습니다.
Custom User ID 등록시, 사용자 식별을 위해 사용자 로그인 후의 화면, 홈 화면 또는 스플래시 화면에 추가해 주세요.
SDK 옵션 상, MethodName은 사용자ID, 사용자 이름, 사용자 이메일로 작성되었으나 사용 예시이며, 실제 개인을 특정할 수 있는 직접 식별 정보 (특정 이름, 주민등록번호, 이메일 주소, 기타 유사 데이터) 보다는 2차 가공한 임의의 식별 정보를 사용하시기를 권고 드립니다.
예를 들어, 2차 가공한 식별자 (예: 2013133, A39233 등), 등급 정보 (예: VIP, Gold, Member), 유입 경로 (예: Google, N, K) 등으로 사용자의 유형 분류에 따른 분석이 가능합니다.
Class Name
Method Name
Description
IdentifierCollector
setCustomUserId(STRING)
사용자 ID-1 (Primary)
IdentifierCollector
setCustomUserName(STRING)
사용자 ID-2
IdentifierCollector
setCustomUserMail(STRING)
사용자 ID-3
SDK에서 사전 정의한 사용자의 ID 정보가 수집되었을 경우, MPM 행동분석 및 Crash 사용자별 에러 목록에서 사용자 ID 정보로 데이터 조회가 가능합니다.
6. Custom User Log/Key 등록
크래시가 발생하기 전에 원하는 로그를 개발자가 직접 추가로 남길 수 있습니다. (최대 100개)
Class Name
Method Name
Description
CustomLogCollector
log(STRING)
로그를 일반 문자열로 남깁니다.
CustomLogCollector
log(KEY, VALUE)
로그를 키:값 형태로 남깁니다.
7. 초기화 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은 크래시 수집에서 제외됩니다.
// IMQA webview-agent.js 연결
<script src="https://cdn.imqa.io/agent/webview-agent.js"></script>
// IMQA webview-agent 스크립트 필수 값
<script>
((w, c, _wv, _w, _wk, _mh, _b) => {
w[c] = w[c] || {};
function imqaConf(key, value){w[c][key]=value};
// 특정 웹 크래시 수집 제한 옵션
imqaConf("filterError", ["$", "type"]); // "$" 또는 "type"이 에러명에 포함된 에러는 수집하지 않음
w[_wv](w); // 웹뷰 에이전트 실행함수
})(window, 'imqaClientConfig', 'IMQAWebviewMain', 'IMQAWebMain', 'webkit', 'messageHandlers', 'ImqaBridge')
</script>
public void onClickSomething() {
EventPathManager.CreateEventPath(STEP, LABEL);
}
IdentifierCollector.setCustomUserId("A100032"); // 사용자 ID-1 (Primary)
IdentifierCollector.setCustomUserName("VIP"); // 사용자 ID-2
IdentifierCollector.setCustomUserMail("G****"); // 사용자 ID-3
CustomLogCollector.log("test log"); // 로그를 일반 문자열로 남깁니다.
CustomKeyCollector.log("My Key", "My Log"); // 로그를 키:값 형태로 남깁니다.
MyApplication.java
@Override
public void onCreate() {
super.onCreate();
io.imqa.core.IMQAOption imqaOption = new io.imqa.core.IMQAOption();
/*
* 기본값 : true
* ANR 정보 수집 여부를 설정합니다.
* true : ANR 발생 여부를 모니터링 합니다.
* false : ANR 발생 모니터링을 중지합니다.
*/
imqaOption.setAnrOn(false);
/*
* 기본값 : 5000
* anrTimeoutInveral : ANR 타임아웃이 발생하는 시간을 설정합니다(milliseconds 단위)
*/
imqaOption.setAnrTimeoutInterval(5000);
/*
* 기본값 : false
* Log 출력 여부를 설정합니다.
* true : IMQA Crash 의 Log가 출력됩니다.
*/
imqaOption.setPrintCrashLog(true);
/*
* 기본값 : true
* 수집된 크래시 정보를 크래시 발생 순간에 업로드합니다.
* true : 크래시 발생 순간에 업로드합니다.
* false : 보관 후 재실행시 업로드 합니다.
*/
imqaOption.setCrashDirectUploadFlag(false);
/*
* 기본값 : false
* 압축 알고리즘을 설정합니다.
* true : zstandard 압축 알고리즘 사용.
* false : gzip 압축 알고리즘 사용.
*/
imqaOption.setCompressZstd(true);
/*
* 기본값 : 'https://main.collector.imqa.io'
* 크래시 서버 URL을 설정합니다.
* String : 서버 정보
*/
imqaOption.setCrashServerUrl('https://main.collector.imqa.io');
io.imqa.crash.IMQACrashAgent.InitializeAndStartSession(
this, // Application Context
BuildConfig.FLAVOR, // Project Flavor Setting
"PROJECT_KEY", // 발급 받은 프로젝트 키
imqaOption // 옵션을 설정할 경우 객체 추가
);
}