AppDelegate中的Firebase addStateDidChangeListener

时间:2018-07-23 01:39:48

标签: ios swift firebase-authentication appdelegate nsnotifications

我正在尝试在我的应用中配置addStateDidChangeListener。我在Firebase Docs中读到,我应该能够在ViewController的{​​{1}}方法中附加侦听器,并在viewWillAppear()的{​​{1}中分离侦听器} 方法。

由于我的应用需要检查许多不同的ViewController中的用户,因此可以在viewWillDisappear()中进行设置吗?

我本来以为将侦听器附加到AppDelegate方法中,但是在StackOverflow上找到了关于此here的答案。我对这个答案的代码如何允许我在ViewControllers中进行检查感到困惑。代码如下:

didFinishLaunchingWithOptions()

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

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 } 中访问此handle = Auth.auth().addStateDidChangeListener { (auth, user) in // ... }

第三,我在哪里分离NSNotification和侦听器?是在ViewControllers方法,NSNotification方法还是其他方法中使用的?

1 个答案:

答案 0 :(得分:0)

嗯,如果您以更好的方式设计它会更好,但是让我为您提供当前结构的帮助。

首先,由于使用了通知,因此您要做的就是在从方法中获取回调时发布通知调用。

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

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