App Center 損毀 (Cordova)
重要
Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到完全淘汰為止,但有數個建議的替代方案可以考慮移轉至。
注意
Cordova Apps 的支援已於 2022 年 4 月結束。 在 App Center 部落格中尋找詳細資訊。
App Center 當機會在每次應用程式當機時自動產生當機記錄。 記錄會先寫入裝置的記憶體,當使用者再次啟動應用程式時,當機報告會傳送至 App Center。 收集當機適用於 Beta 和即時應用程式,也就是提交至 App Store 的應用程式。 當機記錄包含寶貴的資訊,可協助您修正當機。
如果您尚未在應用程式中設定 SDK,請遵循 使用者入門 一節。
App Center 當機可讓您使用 API 來產生測試損毀,以便輕鬆測試 SDK。 此 API 只能用於測試/Beta 應用程式,且不會在生產應用程式中執行任何動作。
AppCenter.Crashes.generateTestCrash();
注意
您的 Cordova 應用程式必須在發行模式中編譯,才能將此損毀傳送至 App Center。
App Center 當機有兩個 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 之前和時執行其他動作的功能。
您可以藉由變更 config.xml中的喜好APPCENTER_CRASHES_ALWAYS_SEND
設定值,將 SDK 設定為自動傳送當機報告,或在 JavaScript 中處理當機。 若要在 JavaScript 中處理當機,請將它設定為 false
。
<preference name="APPCENTER_CRASHES_ALWAYS_SEND" value="false" />
然後,您可以使用 AppCenter.Crashes.process(processFunction, errorCallback)
方法來自定義損毀進程。
如果您要決定是否需要處理特定當機,請傳遞 false
至 sendCallback
。 例如,您可能想要忽略系統層級損毀,而且您不想傳送至 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);
否則,會傳遞 true
至 sendCallback
函式,並傳送當機。
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.4 MB,iOS 上為 7 MB。 嘗試傳送較大的附件將觸發錯誤。
您可以在執行時間啟用和停用 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 當機是否已啟用:
var success = function(result) {
console.log("crashes " + (result) ? "enabled" : "disabled");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.isEnabled(success, error);