Ios 启动时检测应用程序崩溃
我看到了一些应用程序,它们可以检测应用程序在上次用于鼓励用户报告错误时是否崩溃 我该怎么做?我试过了,但在我的swift项目中没有成功…Ios 启动时检测应用程序崩溃,ios,swift,crash,crash-reports,Ios,Swift,Crash,Crash Reports,我看到了一些应用程序,它们可以检测应用程序在上次用于鼓励用户报告错误时是否崩溃 我该怎么做?我试过了,但在我的swift项目中没有成功… 我想到的一种方法是每次应用程序即将关闭时保存一些内容,然后在启动应用程序时读取值,我猜当应用程序崩溃时,它将无法再保存任何内容,对吗? 但是,这不是很优雅。有没有更好的方法来检测碰撞 提前感谢:)你可以通过twitter使用crashlytics 下载fabric mac应用程序 打开它并注册一个新帐户 将xcode项目添加到结构中的项目列表中 选择此选项可将
我想到的一种方法是每次应用程序即将关闭时保存一些内容,然后在启动应用程序时读取值,我猜当应用程序崩溃时,它将无法再保存任何内容,对吗?
但是,这不是很优雅。有没有更好的方法来检测碰撞
提前感谢:)你可以通过twitter使用crashlytics
您可以使用内联闭包在崩溃期间执行日志记录
NSSetUncaughtExceptionHandler { exception in
// Do necessary logging work here
}
这可能会对您有所帮助。我建议使用crash reporter like fabric&。。。它非常易于使用,并帮助您轻松找到问题。链接中的解决方案满足您的所有需求。如果应用程序崩溃,请保存信息。运行应用程序时,请检查保存的信息并清除保存的上下文。为什么它在你的应用程序中不起作用?我想我可以翻译它,但它抱怨
&
@LinusG的问题。你的想法更好。看看我的答案。即使您使用NSSetUncoughtExceptionHandler,它对于swift致命错误也没有用处,比如访问UncoughtNil…这只适用于UncoughtException,如果您访问UncoughtNil,处理程序不会执行任何操作…我同意,但swift在设计时考虑到安全性,在编译时消除了不安全的代码。Optionals应该通过该语言提供的各种机制(如可选绑定)随时进行安全管理。总之,应该避免强制展开/隐式展开。在纯swift代码中,不应该有任何未捕获的异常。。。事实上,应用程序很容易在非突发异常情况下崩溃。OP想知道应用程序是否崩溃。可能“不是很优雅”,但他的方法似乎是唯一可用的方法。Fabric如何实现崩溃报告?
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")