【问题标题】:How do I force a crash in Swift iOS app with Fabric SDK?如何使用 Fabric SDK 在 Swift iOS 应用程序中强制崩溃?
【发布时间】:2015-03-19 04:35:42
【问题描述】:

我能找到的只有Is there a quick way to force a crash?,上面写着:

[[Crashlytics sharedInstance] crash];

我认为在 Swift 中应该是

Crashlytics.sharedInstance.crash()

但这似乎不存在。 (也许这些文档已经过时并且不再适用,因为 Fabric 吞并了 Crashlytics?)

我看到有一个 Crashlytics.crash(self:Crashlytics) ...没关系,Friggin XCode 的完成对我来说总是被破坏。请参阅下面的答案。

【问题讨论】:

    标签: ios swift crashlytics twitter-fabric


    【解决方案1】:

    (如果它在您的 AppDelegate 以外的文件中,则需要 import Crashlytics,然后只需执行 Crashlytics.sharedInstance().crash()

    【讨论】:

    • 显示崩溃日志需要时间吗?它会在 24 小时后显示还是立即显示?
    • @Nirav 我认为它会在您下次启动应用程序后在线显示(我认为它将日志存储在设备上,框架在您的应用程序中注入的第一个操作是发送日志差异也许)
    • 最新版本,在 Swift 上,只需调用fatalError(),如下所述。
    【解决方案2】:

    在 firebase 中创建项目和应用

    如果您有现有的 firebase 项目,请在 firebase 控制台中添加新的 iOS 应用,或者创建 firebase 项目并在 firebase 控制台中创建新应用。

    将 Firebase 添加到 iOS 应用

    首先在第 1 步中,通过在创建 iOS 应用到 Firebase 时添加捆绑标识符来注册您的应用。在第 2 步中,下载配置文件 GoogleService-Info.plist 将其添加到您的工作区,如下图所示。

    通过 CocoaPods 添加 Crashlytics SDK

    要开始使用,请将 Crashlytics SDK 框架文件添加到您的项目中。对于大多数项目,最简单的方法是添加 Crashlytics CocoaPods。

      pod 'Firebase/Core'
      pod 'Fabric', '~> 1.7.2'
      pod 'Crashlytics', '~> 3.9.3'
    

    测试你的实现

    启用 Crashlytics 调试模式:为了在调试模式下启用 crashlytics,我们需要在 AppDelegate.swift 中将 Fabric.sharedSDK().debug 模式设置为 true。

    import UIKit
    import Firebase
    import Crashlytics
    import Fabric
    

    @UIApplicationMain 类 AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        Fabric.sharedSDK().debug = true
        return true
    }
    

    强制崩溃以测试实现:在撰写本文时,我有一个视图控制器,在视图控制器中间有一个名为(单击以崩溃应用程序)的按钮。出于测试目的,当用户单击按钮时应用程序崩溃。

    查看控制器下面的代码并在模拟器或设备中运行一次并检查 Firebase 仪表板。您会找到所有崩溃报告。

        import UIKit
        import Crashlytics
    

    类 ViewController: UIViewController { 变量名称:字符串! 变量编号:整数!

    override func viewDidLoad() {
        super.viewDidLoad()
         name = "12"
       }
    
    
        @IBAction func crashBtnAction(_ sender: Any) {
         //creshreportMethod()
        print("name of the value",name)
        var myDict = [String:Any]()
        myDict = ["name":number!]
        print("my dict value",myDict)
    
      }
    
    
    }
    

    如果您的构建在启动时附加了调试器,Crashlytics 将无法捕获崩溃。调整构建设置以更改项目的调试信息格式:

    在 Xcode Navigator 中仍选择您的项目时,打开 Build Settings 选项卡。 单击选项卡顶部的全部以显示所有构建设置。 搜索“调试信息格式”。 使用 dSYM 文件将调试信息格式设置为 DWARF。

    【讨论】:

      【解决方案3】:

      如果您使用的是新的Firebase Crashlytics SDK,请注意import Crashlytics 已替换为import FirebaseCrashlyticscrash() 方法在新的 SDK 中不再可用。按照 Firebase 的建议,只需使用:

      斯威夫特:

      fatalError()
      

      对象 C:

      assert(NO);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        • 2015-10-11
        • 2018-02-12
        相关资源
        最近更新 更多