我已经在app代理中实现了Firebase身份验证和Firebase数据库,它检查用户是否登录,或者not.It检查数据库中的'users‘节点,看看在子快照中是否有用户I,这个操作大约需要2-3秒。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
if let uid = Auth.auth().currentUser?.uid {
Database.database().reference().child("users").child(uid).observeSingleEvent(of: .value, with: { snapshot in
if snapshot.exists() {
print("App Delegate: User found!")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "Main")
self.window?.rootViewController = vc
self.window?.makeKeyAndVisible()
}
else{
print("App Delegate: User not found!")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "Login")
self.window?.rootViewController = vc
self.window?.makeKeyAndVisible()
}
})
}
return true
}
登录viewController是初始viewController。当启动屏幕淡出时,将显示登录viewController,如果用户已登录,则会显示主viewController,但在本例中,显示登录viewController的时间间隔为2-3秒。我也尝试过实现NavigationController,但是同样的问题。
那么,如果用户已经登录并直接转到主viewController并有效地管理这2-3秒的时间间隔,我怎么能不显示登录viewController呢?
发布于 2018-08-29 21:54:52
在本地会话中跟踪isLogin变量,使其在登录和注销成功时为真和假。当第一次登录时,然后检查会话变量isLogin。您可以将会话保存在UserDefault或Keychain中。这样你就可以避免你的问题了。
或者你只需要这样检查:
if FIRAuth.auth().currentUser != nil {
presentHome()
} else {
//User Not logged in
}
在那之后,当你导航到desire viewController时,在那里做剩下的事情。
https://stackoverflow.com/questions/52077793
复制相似问题