Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 启动时检测应用程序崩溃_Ios_Swift_Crash_Crash Reports - Fatal编程技术网

Ios 启动时检测应用程序崩溃

Ios 启动时检测应用程序崩溃,ios,swift,crash,crash-reports,Ios,Swift,Crash,Crash Reports,我看到了一些应用程序,它们可以检测应用程序在上次用于鼓励用户报告错误时是否崩溃 我该怎么做?我试过了,但在我的swift项目中没有成功… 我想到的一种方法是每次应用程序即将关闭时保存一些内容,然后在启动应用程序时读取值,我猜当应用程序崩溃时,它将无法再保存任何内容,对吗? 但是,这不是很优雅。有没有更好的方法来检测碰撞 提前感谢:)你可以通过twitter使用crashlytics 下载fabric mac应用程序 打开它并注册一个新帐户 将xcode项目添加到结构中的项目列表中 选择此选项可将

我看到了一些应用程序,它们可以检测应用程序在上次用于鼓励用户报告错误时是否崩溃

我该怎么做?我试过了,但在我的swift项目中没有成功…
我想到的一种方法是每次应用程序即将关闭时保存一些内容,然后在启动应用程序时读取值,我猜当应用程序崩溃时,它将无法再保存任何内容,对吗?
但是,这不是很优雅。有没有更好的方法来检测碰撞


提前感谢:)

你可以通过twitter使用crashlytics

  • 下载fabric mac应用程序
  • 打开它并注册一个新帐户
  • 将xcode项目添加到结构中的项目列表中
  • 选择此选项可将crashlytics框架添加到应用程序中
  • 构建你的应用程序
  • 请参阅给定的代码片段以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")