Firebase addStateDidChangeListener в AppDelegate

Я пытаюсь настроить addStateDidChangeListener в своем приложении. Я прочитал в Документы Firebase, что должен иметь возможность прикрепить прослушиватель в метод viewWillAppear() ViewController и отсоединить слушателя в методе viewWillDisappear() ViewController. Можно ли настроить это в AppDelegate, поскольку моему приложению нужно будет проверять пользователя во многих разных ViewControllers?

Первоначально я думал подключить прослушиватель в методе didFinishLaunchingWithOptions(), но нашел ответ об этом здесь на StackOverflow. Я немного смущен тем, как код этого ответа позволит мне выполнять проверки в 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
  // ...
}

Во-вторых, как я могу получить доступ к этому NSNotification в моем ViewControllers?

В-третьих, где мне отсоединить и NSNotification, и прослушиватель? Это метод applicationWillTerminate(), метод applicationWillResignActive() или какой-то другой метод?


person Dan Levy    schedule 23.07.2018    source источник


Ответы (1)


Что ж, было бы лучше, если бы вы разработали его получше, но позвольте мне помочь вам с текущей структурой.

Во-первых, поскольку вы используете уведомление, все, что вам нужно сделать, это опубликовать вызов уведомления, когда вы получите обратный вызов от метода.

Во-вторых, как работает уведомление, вы размещаете его где-то в коде и добавляете наблюдателя в контроллеры представления, когда вам это нужно. Вы можете получить доступ к этому уведомлению, установив наблюдателей в указанных контроллерах представления.

В-третьих, это зависит от вас на самом деле. Если отсоединять наблюдателей, когда приложение уходит в фон, то делать это надо. Если вы это сделаете, вы должны настроить его, когда он станет активным.

person James Kim    schedule 23.07.2018
comment
Если бы вы могли высказать свое мнение о лучшем способе или предоставить код, дополняющий ваши идеи, это было бы здорово! - person Dan Levy; 23.07.2018