我看到一些應用程序檢測應用程序是否最後一次崩潰,以鼓勵用戶報告該錯誤。啓動時檢測應用程序崩潰
我該怎麼做?我試過this solution,但沒有得到它在我的迅速項目中工作...
我想到的一種方法是保存一些東西,每次應用程序即將被關閉,然後在啓動應用程序時讀取值,我猜測應用何時崩潰,那麼它將無法保存任何東西,對吧?
但是,這不是很優雅。有沒有更好的方法來檢測崩潰?
在此先感謝:)
我看到一些應用程序檢測應用程序是否最後一次崩潰,以鼓勵用戶報告該錯誤。啓動時檢測應用程序崩潰
我該怎麼做?我試過this solution,但沒有得到它在我的迅速項目中工作...
我想到的一種方法是保存一些東西,每次應用程序即將被關閉,然後在啓動應用程序時讀取值,我猜測應用何時崩潰,那麼它將無法保存任何東西,對吧?
但是,這不是很優雅。有沒有更好的方法來檢測崩潰?
在此先感謝:)
您可以通過twitter使用crashlytics。
Fabric如何實現崩潰報告? – kelin
您可以使用內聯閉包來執行崩潰期間的日誌記錄。
NSSetUncaughtExceptionHandler { exception in
// Do necessary logging work here
}
這SO thread可能是幫助你..
這隻適用於UncaughtException,如果你訪問unwrapped nil,處理程序不會執行任何操作...... – user3441734
我同意,但是Swift在編譯時通過消除不安全的代碼來設計安全。通過語言提供的各種機制(如可選綁定),可選項應該始終得到安全管理。恕我直言,應該避免強制解包/隱式解包。 –
在純SWIFT代碼中應該沒有任何未捕獲的異常......實際上,該應用程序可以非常容易地與未捕獲異常一起崩潰。 OP想知道應用程序是否崩潰。可能不是很優雅,但他的方法似乎是唯一可用的方法。 – user3441734
import XCPlayground
import Foundation
let fm = NSFileManager()
if fm.fileExistsAtPath("terminated") {
try! fm.removeItemAtPath("terminated")
} else {
print("an app crashed last time")
}
// set i to nil to force the app to crash
// than set it to 0 and execute it again
let i: Int! = 0
let j: Int = i
fm.createFileAtPath("terminated", contents: nil, attributes: nil)
print("terminated")
我建議使用崩潰報告就像布&... 它非常易於使用,並幫助你找到你的問題很容易 – Mohamad
來自鏈接的解決方案可以滿足您的所有需求。如果應用程序崩潰,則保存信息。當運行應用程序時,檢查保存的信息並清除保存的上下文。爲什麼它不適用於你的應用程序? – user3441734
我想我可以翻譯它,但它抱怨'&' – LinusGeffarth