App Center 當機 (Cordova)
注意
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 當機提供讓開發人員在將損毀記錄傳送至 App Center 之前和時執行其他動作的能力。
在 JavaScript 中處理損毀
您可以藉由變更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 當機
您可以在執行時間啟用和停用 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);