【问题标题】:App crashing after implementing Firebase Auth listener in Scene Delegate在 Scene Delegate 中实现 Firebase Auth 侦听器后应用程序崩溃
【发布时间】:2020-08-21 12:48:53
【问题描述】:

我已经在 App Store 上的一个应用中实施了 Firebase Auth(使用 Apple 登录)和 Firebase firestore。 我在 firebase 文档的场景委托中实现了一个用于身份验证状态的侦听器。 https://firebase.google.com/docs/auth/ios/start

它检查用户是否登录。该代码旨在在没有用户注册的情况下显示登录视图控制器,如果用户已经创建帐户并且在启动时没有注销,则显示主视图控制器。

但是,我从用户那里得到反馈,在退出和登录后,应用程序在 live 或 testFlight 中不断崩溃,我在 Crashlytics 或 App Store Connect 中没有报告任何内容。我正在寻求遇到同样问题的人的帮助。

 var handle: AuthStateDidChangeListenerHandle?

 handle = Auth.auth().addStateDidChangeListener { (auth, user) in
        if((user) != nil){
            let home = TabBar()
            home.selectedIndex = 1
            self.window?.rootViewController = home
        } else if((user) == nil) {
            print("Not Logged in")
            let signup = SignUpVC()
            self.window?.rootViewController = signup
        }
    }

【问题讨论】:

  • 我们肯定需要更多信息。你能用附加的调试器重现这个错误吗?即使在发布版本中也足够了。
  • 我无法重现该错误,我只知道肯定是由于设备内存不足,导致操作系统杀死应用程序(应用程序崩溃,使iPhone 加载并带回锁定屏幕)。自从我添加了身份验证侦听器并在我的应用程序中实现此逻辑后,就会出现此问题。

标签: swift firebase-authentication uiscenedelegate


【解决方案1】:

已解决: 崩溃是由强引用循环导致的内存泄漏引起的。这是一个很好的教程来理解它:https://www.youtube.com/watch?v=q0-DIJszYRo 为了避免这种情况,我使用了weak & [weak self]

weak var handle: AuthStateDidChangeListenerHandle?

handle = Auth.auth().addStateDidChangeListener { [weak self] (auth, user) in

这样就解决了问题,由于内存不足,操作系统不再杀死应用程序。

【讨论】:

    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多