Я использую Firebase и GoogleSignIn для регистрации пользователя в моем приложении iOS. Я написал весь код в соответствии с инструкциями в файле AppDelegate.swift. После успешного входа в систему я хочу перевести пользователя к другому ViewController. Мой текущий код:
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if (error) != nil {
return
}
print("User signed into Google")
guard let authentication = user.authentication else { return }
let credential = FIRGoogleAuthProvider.credential(withIDToken: authentication.idToken,
accessToken: authentication.accessToken)
FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in
print("User Signed In to Firebase")
self.databaseRef = FIRDatabase.database().reference()
self.databaseRef.child("Google User Profiles").child(user!.uid).observeSingleEvent(of: .value, with: { (snapshot) in
let snapshot = snapshot.value as? NSDictionary
if (snapshot == nil)
{
self.databaseRef.child("Google User Profiles").child(user!.uid).child("name").setValue(user?.displayName)
self.databaseRef.child("Google User Profiles").child(user!.uid).child("email").setValue(user?.email)
}
})
})
}
LoginViewController
Отметьте это stackoverflow.com/questions/36910965/…
По этой ссылке ничего не упоминается о сегментах.
Использование NSNotificationCenter передает данные от appdelegate контроллеру loginview. Затем выполните переход от loginviewcontroller к другому viewcontroller.
Я ищу более простой способ сделать то же самое.
Затем переместите этого пользователя didSignInFor из appdelegate в контроллер входа в систему и выполните переход в контроллере входа в систему.
Можно ли выполнить вход в Google из самого контроллера представления?
«Я написал весь код в соответствии с инструкциями в файле AppDelegate.swift. После успешного входа в систему я хочу перевести пользователя к другому ViewController». Это то, для чего нужен AppDelegate?
@UtkarshSharma Да, можно.





Сначала войдите в свою раскадровку и установите идентификатор раскадровки для вашего viewController. ID раскадровки Затем перейдите в свой viewController и добавьте эти методы в свой класс.
import UIKit
class ViewController2: UIViewController {
// Change the name of the storyboard if this is not "Main"
// identifier is the Storyboard ID that you put juste before
class func instantiate() -> ViewController2 {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "\(ViewController2.self)") as! ViewController2
return viewController
}
}
Затем в делегате вашего приложения, когда вы хотите показать viewController, выполните
window?.rootViewController = ViewController2.instantiate()
Здесь, к какому ViewController мы хотим направить пользователя, а на каком мы сейчас?
ViewController2 - это viewController, который мы хотим использовать для пользователя.
В каком контроллере просмотра у вас есть кнопка входа в Google?