私は自分のウィンドウのルートビューコントローラをバットオフのログインコントローラとして設定しています。ログインコントローラはFirebaseからのユーザ認証をチェックします。ユーザーがログインしている場合、コントローラーはルートビューコントローラーをフィードコントローラーに変更します。それ以外の場合、ログインコントローラはそれ自体として処理を続けます。Swift Firebaseがよりスムーズに認証を確認します
launchApplication
が
if let uid = Auth.auth().currentUser?.uid
に加えて
class func launchApplication() {
guard let window = UIApplication.shared.keyWindow else { return }
window.rootViewController = UINavigationController(rootViewController: FeedController())
}
で、私は状況があったので、uidは(それがnil
ない場合)、私のデータベースに存在するかどうかをチェックしてい
class LoginController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let uid = Auth.auth().currentUser?.uid {
Database.database().reference().child("users").observeSingleEvent(of: .value, with: { snapshot in
if snapshot.hasChild(uid) {
AppDelegate.launchApplication()
}
else {
self.setUpUI()
}
})
}
else {
self.setUpUI()
}
}
...
}
削除されたユーザーはまだnil
ではありませんでした。
問題は、起動画面が終了した後、ログインコントローラが空白になっていることがあります。時にはこの瞬間が数秒続くことがあります。ログインコントローラが表示されないように認証を確認するにはどうすればよいですか?アプリは、起動画面が消えた直後にアプリが進行する方法を決めます。ありがとう。
あなたはAppdelegateからのプレゼンテーションを試しましたか?最初にloginControllerを初期化しているので、これが起こっています。これは残渣が表示されている理由です。 –