我已在我的ios应用Firebase
(设为Google Sign In
)中整合了AuthViewController
,initial ViewController
。
一旦用户使用Google登录按钮登录,他就会被重定向回
同样AuthViewController
(即显示Google登录按钮,虽然他已登录)。
问题:
在用户登录后,我是否可以配置重定向到特定ViewController
?如果不是,我需要知道如何使用以下功能在AppDelegate
中以编程方式执行此操作
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
if let error = error {
// ...
return
}
guard let authentication = user.authentication else { return }
let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
accessToken: authentication.accessToken)
Auth.auth().signIn(with: credential) { (user, error) in
if let error = error {
// ...
return
}
// User is signed in
// ...
}
}
我已经在我的AuthViewController
中定义了一个segue以转到MainViewController
,但看起来Firebase身份验证是异步调用而userAuthenticated()
函数返回false
我们在viewDidAppear
函数中调用的时间
override func viewDidAppear(_ animated: Bool) {
print("--------View Did Appear \(userAuthenticated())")
if userAuthenticated() {
self.performSegue(withIdentifier: "showMain", sender: nil)
}
}
func userAuthenticated() -> Bool {
return (Auth.auth().currentUser != nil) ? true : false
}
编辑:
使用Yarn的方法,虽然它解决了问题..但它首先显示AuthViewController
的视图,然后转向MainViewController
...它显示的是一个糟糕的UI体验..我希望用户直接转到MainViewController
登录后。{/ p>
答案 0 :(得分:1)
要以编程方式从AppDelegate中截取,您可以调用
Thread