ios - Google Firebase 登录完成后从 AppDelegate 导航到 ViewController

标签 ios firebase firebase-authentication google-signin

我在我的 iOS 应用程序的 AuthViewController 中集成了 FirebaseGoogle 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/

相关文章:

ios - 什么是配置 UITableViewCell 的正确形式?

android - 在 firebase 中使用名称、用户名等创建新用户

reactjs - React/Redux 从根组件调度操作?

ios - 未使用的场景从 Storyboard 中临时隐藏

ios - 如果相关对象更改,如何通知 NSFetchedResultsController

ios - 无法从 API 获取图像以加载到 Swift 中的 UIImageView 中

ios - Firebase 查询在错误的时间运行

ios - RN Firebase - 如何检查用户是否接受了 IOS 上的通知权限

android - "GoogleApiClient is not connected yet"在使用 Firebase 身份验证和谷歌登录时注销

javascript - 将 Firebase 方法转换为异步等待