다음을 통해 공유


App Center 충돌(Cordova)

중요

Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.

지원 타임라인 및 대안에 대해 자세히 알아보세요.

참고

Cordova 앱에 대한 지원은 2022년 4월에 종료되었습니다. 자세한 내용은 App Center 블로그를 참조하세요.

App Center 충돌은 앱이 충돌할 때마다 자동으로 크래시 로그를 생성합니다. 로그는 먼저 디바이스의 스토리지에 기록되며 사용자가 앱을 다시 시작하면 크래시 보고서가 App Center로 전송됩니다. 크래시 수집은 베타 및 라이브 앱( 즉, App Store 제출된 앱 모두에 적용됩니다. 크래시 로그에는 크래시 해결에 도움이 되는 중요한 정보가 포함되어 있습니다.

애플리케이션에서 SDK를 아직 설정하지 않은 경우 시작 섹션을 따릅니다.

테스트 크래시 생성

App Center Crashs는 SDK를 쉽게 테스트하기 위한 테스트 크래시를 생성하는 API를 제공합니다. 이 API는 테스트/베타 앱에서만 사용할 수 있으며 프로덕션 앱에서는 아무 작업도 수행하지 않습니다.

AppCenter.Crashes.generateTestCrash();

참고

이 크래시가 App Center로 전송되려면 Cordova 앱을 릴리스 모드로 컴파일해야 합니다.

이전 충돌에 대한 자세한 정보 가져오기

App Center Crashs에는 앱이 충돌하는 경우 더 많은 정보를 제공하는 두 개의 API가 있습니다.

앱이 이전 세션에서 메모리 부족 경고를 받았나요?

SDK를 시작한 후 언제든지 앱이 이전 세션에서 메모리 경고를 받았는지 검사 수 있습니다.

var success = function(hadLowMemoryWarning) {
    console.log(`there was ${hadLowMemoryWarning ? "a" : "no"} memory warning`);
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.hasReceivedMemoryWarningInLastSession(success, error);

참고

경우에 따라 디바이스의 메모리를 낮게 실행해도 추적 가능한 이벤트가 트리거되지 않을 수 있습니다.

이전 세션에서 앱이 충돌했나요?

SDK를 시작한 후 언제든지 이전 실행에서 앱이 충돌했는지 검사 수 있습니다.

var success = function(didCrash) {
    console.log("there was " + (didCrash ? "a" : "no") + " crash");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.hasCrashedInLastSession(success, error);

이는 크래시가 발생한 후 앱의 동작 또는 UI를 조정하려는 경우에 유용합니다. 일부 개발자는 사용자에게 사과하거나 충돌이 발생한 후 연락하기 위해 무언가를 표시하려고 할 수 있습니다.

마지막 충돌에 대한 세부 정보

앱이 이전에 충돌한 경우 마지막 크래시에 대한 세부 정보를 얻을 수 있습니다.

var success = function(crashReport) {
    //do something with crash report
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.lastSessionCrashReport(success, error);

App Center 크래시 사용 사용자 지정

App Center 충돌은 개발자가 App Center에 크래시 로그를 보내기 전과 전송할 때 추가 작업을 수행할 수 있는 기능을 제공합니다.

JavaScript에서 크래시 처리 중

config.xml기본 설정 APPCENTER_CRASHES_ALWAYS_SEND 값을 변경하여 자동으로 크래시 보고서를 보내거나 JavaScript에서 크래시를 처리하도록 SDK를 구성할 수 있습니다. JavaScript에서 크래시를 처리하려면 으로 false설정합니다.

<preference name="APPCENTER_CRASHES_ALWAYS_SEND" value="false" />

그런 다음 메서드를 사용하여 AppCenter.Crashes.process(processFunction, errorCallback) 크래시 행렬을 사용자 지정할 수 있습니다.

크래시가 처리되어야 하나요?

sendCallback 특정 크래시가 처리되어야 하는지 여부를 결정하려면 에 전달 false 합니다. 예를 들어 무시하려는 시스템 수준 크래시가 있을 수 있으며 App Center로 보내지 않을 수 있습니다.

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    sendCallback(false); //crash won't be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

그렇지 않으면 함수에 sendCallback 전달 true 되고 크래시가 전송됩니다.

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    sendCallback(true); //crash will be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

참고

이 기능을 사용하려면config.xml기본 설정 값을 로 설정 APPCENTER_CRASHES_ALWAYS_SEND 해야 합니다 false.

따라서 이 기능은 JavaScript에서 크래시 처리에 따라 달라집니다.

크래시 보고서에 첨부 파일 추가

크래시 보고서에 이진 및 텍스트 첨부 파일을 추가할 수 있습니다. SDK는 크래시와 함께 전송되므로 App Center 포털에서 볼 수 있습니다. 다음 콜백은 이전 애플리케이션 시작에서 저장된 크래시를 보내기 직전에 호출되지만 크래시 시에는 호출되지 않습니다. 해당 이름이 미니덤프 파일에 예약되어 있으므로 첨부 파일의 이름이 지정 minidump.dmp되지 않았는지 확인합니다. 다음은 충돌 시 텍스트와 이미지를 연결하는 방법의 예입니다.

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    for (var i = 0; i < attachments.length; i++) {
        attachments[i].addTextAttachment('Hello text attachment!', 'hello.txt');
        var imageAsBase64string = '...';
        attachments[i].addBinaryAttachment(imageAsBase64string, 'logo.png', 'image/png');
    }
    sendCallback(true); //crash will be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

참고

해당 기능을 사용하려면config.xml기본 설정 값을 로 설정 APPCENTER_CRASHES_ALWAYS_SEND 해야 합니다 false.

따라서 이 기능은 JavaScript에서 크래시 처리에 따라 달라집니다.

참고

크기 제한은 현재 Android에서 1.4MB, iOS에서는 7MB입니다. 더 큰 첨부 파일을 보내려고 하면 오류가 트리거됩니다.

런타임에 App Center 충돌 사용 또는 사용 안 함

런타임에 App Center 크래시를 사용하거나 사용하지 않도록 설정할 수 있습니다. 사용하지 않도록 설정하면 SDK에서 앱에 대한 크래시 보고를 수행하지 않습니다.

var success = function() {
    console.log("crashes disabled");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.setEnabled(false, success, error);

App Center 크래시를 다시 사용하도록 설정하려면 동일한 API를 사용하지만 매개 변수로 전달 true 합니다.

var success = function() {
    console.log("crashes enabled");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.setEnabled(true, success, error);

상태는 애플리케이션이 시작되는 동안 디바이스의 스토리지에 유지됩니다.

App Center 크래시가 사용하도록 설정되어 있는지 확인

App Center 크래시가 사용되는지 여부를 검사 수도 있습니다.

var success = function(result) {
    console.log("crashes " + (result) ? "enabled" : "disabled");
}

var error = function(error) {
    console.error(error);
}
AppCenter.Crashes.isEnabled(success, error);