【问题标题】:Firebase addStateDidChangeListener in AppDelegateAppDelegate 中的 Firebase addStateDidChangeListener
【发布时间】:2018-12-30 10:09:55
【问题描述】:

我正在尝试在我的应用程序中配置 addStateDidChangeListener。我在Firebase Docs 中读到,我应该能够在ViewControllerviewWillAppear() 方法中附加监听器,并在ViewControllerviewWillDisappear() 方法中分离监听器。是否可以在AppDelegate 中进行设置,因为我的应用需要在许多不同的ViewControllers 中检查用户?

我原本想在didFinishLaunchingWithOptions()方法中附加监听器,但是在StackOverflow上找到了关于这个here的答案。我对这个答案的代码如何让我在ViewController 中进行检查感到有些困惑。代码如下:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseApp.configure()
    NotificationCenter.default.addObserver(forName: NSNotification.Name.AuthStateDidChange, object: Auth.auth(), queue: nil) { (_) in
        let user = Auth.auth().currentUser
    }
    return true
}

首先,上述代码是否被认为是设置以下 Firebase 方法的正确方法:

handle = Auth.auth().addStateDidChangeListener { (auth, user) in
  // ...
}

其次,如何在我的ViewControllers 中访问这个NSNotification

第三,我在哪里分离NSNotification 和监听器?是在applicationWillTerminate() 方法、applicationWillResignActive() 方法还是其他方法中?

【问题讨论】:

    标签: ios swift firebase-authentication appdelegate nsnotifications


    【解决方案1】:

    好吧,如果您以更好的方式设计它会更好,但让我帮助您解决当前的结构。

    首先,由于你使用了通知,你所要做的就是在从方法中获得回调时发布通知调用。

    其次,通知的工作原理是将其发布在代码中的某个位置,并在需要时在视图控制器中添加观察者。您可以通过在所述视图控制器中设置观察者来访问此通知。

    第三,这实际上取决于您。如果在应用程序进入后台时分离观察者,那么你应该这样做。如果这样做,则必须在它变为活动状态时对其进行设置。

    【讨论】:

    • 如果您能就更好的方式提出您的意见或提供一些代码来补充您的想法,那就太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多