我在我的 iOS 应用程序的 AuthViewController
中集成了 Firebase
、Google Sign In
(设置为 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()
函数在我们调用 viewDidAppear
函数时返回 false
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
的 View ,然后转到 MainViewController
......这是一个糟糕的 UI 体验显示 ..我希望用户在登录后直接转到 MainViewController
。
最佳答案
要以编程方式从 AppDelegate 继续,您可以调用
if let rootVC = window?.rootViewController {
rootVC.performSegue(withIdentifier: "segue", sender: self)
}
关于ios - Google Firebase 登录完成后从 AppDelegate 导航到 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980630/