【问题标题】:FirebaseUI crashes when attempting to show auth picker尝试显示身份验证选择器时 FirebaseUI 崩溃
【发布时间】:2018-04-04 00:14:43
【问题描述】:

我在我的项目中使用 Firebase 和 FirebaseUI,并且在尝试登录时经常遇到同样的崩溃。用户点击 Log in 按钮,然后身份验证选择器应该是如图所示,用户可以使用 Facebook/Google 或电子邮件/密码登录。但是,除了标记以下行之外,它会崩溃并显示 no 错误消息:

struct FIRAuthLogin {
    private let authUI = FUIAuth.defaultAuthUI()
    private var viewController: UIViewController!

    init(delegate: FIRCustomAuthDelegate, viewController: UIViewController) {
        self.viewController = viewController

        authUI?.delegate = delegate
        authUI?.providers = [FUIGoogleAuth(), FUIFacebookAuth()]
    }

    func present(completion: @escaping () -> Void) {

        // Exception on the line below!
        let authViewController = authUI?.authViewController()

        self.viewController.present(authViewController!, animated: true, completion: completion)
    }
}

即使let authViewController = authUI?.authViewController() 行中存在异常,authViewController 不是 nil

下面是堆栈跟踪中的图像(在问题导航器中):

问题是我只是覆盖了FUIPasswordSignUpViewController,所以我有点困惑。

每当发生这种情况时,我通常只是从我的项目中删除 CocoaPods 并再次集成它。然后它会正常工作,但是我现在已经多次这样做了,并且错误仍然存​​在,必须有一个潜在的错误。不幸的是,我无法使用 FirebaseUI GitHub 代码重现该错误,所以我猜测该错误已经结束。这就是为什么我在这里而不是在 FirebaseUI-iOS GitHub 存储库中询问的原因。

【问题讨论】:

  • 尝试让您的代码更安全,例如为您的authViewController 添加if let。我猜这不会在生产中发生???我希望不是。我得到了这个理论,因为您提到了通过 Cocoapods 重新安装框架。尝试通过 TestFlight 测试您的应用时重现该崩溃。
  • 我正在通过 TestFlight 进行测试,它工作正常。正如我所说,authViewController 不是nil。使用 if let 时,我得到了同样的异常。

标签: ios swift firebase firebase-authentication firebaseui


【解决方案1】:

终于修复了。我在 FirebaseUI iOS 存储库中打开了一个issue,在将我的项目发送给一位 Google 工程师后,他解决了它:

您好像遇到了CocoaPods/CocoaPods#6936。将构建系统设置为使用标准(不是新的构建系统预览版)、删除 DerivedData 并重新构建可修复此问题。

暂时你将不得不使用新的构建系统。

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多