Googlesignin - попытка загрузить представление контроллера представления во время его освобождения недопустима и может привести к неопределенному поведению.

Когда я отменяю вход в Google, появляется предупреждение. В остальном он работает нормально. Если я реализую это с помощью кнопки действия, у меня не будет ошибок. Но моя цель - запустить его при запуске.

import UIKit
import GoogleSignIn
import Firebase

class BaseScreen : UIViewController, GIDSignInUIDelegate {

override func viewDidLoad() {
    super.viewDidLoad()

    GIDSignIn.sharedInstance().uiDelegate = self
    GIDSignIn.sharedInstance().signIn()
} }

Это делегат моего приложения

import UIKit
import Firebase
import GoogleSignIn

 @UIApplicationMain
  class AppDelegate: UIResponder, UIApplicationDelegate, 
  GIDSignInDelegate {

   var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    FirebaseApp.configure()

    GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
    GIDSignIn.sharedInstance().delegate = self

    print("application did finish launching")

    return true
}

func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
    -> Bool { return GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
                                                 annotation: [:])}

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
    // ...
 if error != nil {
        // ...
    print("login failed")
    GIDSignIn.sharedInstance().signIn()


        return
    }

    guard let authentication = user.authentication else { return }
    let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                   accessToken: authentication.accessToken)
    // ...

    Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
        if error != nil {
            // ...
            return

        }
        // User is signed in

        print("Firebase login Success", user)
        return
    }           }

func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {

} }

Я хочу, чтобы вход происходил автоматически, а не запускался действием. Я также пробовал это с viewDidAppear(), но все равно получаю ту же ошибку.

показать дополнительный код

Anbu.Karthik 10.09.2018 11:07

Да, я добавил весь связанный код

arthas 10.09.2018 11:46
1
2
666
0

Другие вопросы по теме