Приложение зависает при входе после выхода из системы - firebase - PullRequest
0 голосов
/ 25 апреля 2018

Я только что добавил кнопку выхода из приложения. Прежде всего, нет проблем в начале. При прикосновении к кнопке выхода из системы это работает и выдает меня на контроллер loginview. Однако при нажатии кнопки воспроизведения после повторного входа приложение просто зависает без каких-либо ошибок. Когда я перезагружаю приложение, приложение работает без проблем. Я понятия не имею о проблеме.

if (logoutBtn?.contains(location))!{

            if isEnabled == false {

            } else if isEnabled == true {

                logoutBtn?.color = customColor
                logoutLabel?.fontColor = fontColor

                try! Auth.auth().signOut()
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let vc = storyboard.instantiateViewController(withIdentifier: "VC")




                Auth.auth().addStateDidChangeListener { (auth, user) in
                    if user != nil {

                    } else {
                        UIView.transition(with: self.view!, duration: 0.3, options: .transitionCurlUp, animations: {

                        }, completion: { completed in
                            self.view?.window?.rootViewController = vc
                        })
                    }
                }
            }
        }

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать skscene для входа в систему.Вы можете найти код ниже:

GameViewController:

 func handleFacebookBtn() {
    print("handleFacebookBtn")
    let fbLoginManager = FBSDKLoginManager()
    fbLoginManager.logIn(withReadPermissions: ["public_profile", "email"], from: self) { (result, error) in
        if let error = error {
            print("Failed to login: \(error.localizedDescription)")
            return
        }

        guard (FBSDKAccessToken.current()) != nil else {
            print("Failed to get access token")
            return
        }

        let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)


        // Perform login by calling Firebase APIs
        Auth.auth().signIn(with: credential, completion: { (user, error) in
            if let error = error {
                print("Login error: \(error.localizedDescription)")
                let alertController = UIAlertController(title: "Login Error", message: error.localizedDescription, preferredStyle: .alert)
                let okayAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
                alertController.addAction(okayAction)
                self.present(alertController, animated: true, completion: nil)

                return
            }

            // Present the main view
            if let viewController = self.storyboard?.instantiateViewController(withIdentifier: "GameViewController") {
                UIApplication.shared.keyWindow?.rootViewController = viewController
                self.dismiss(animated: true, completion: nil)
            }

        })

    }
}
func handleGoogleBtn() {
    print("handleTwitterBtn")
    GIDSignIn.sharedInstance().signIn()

}

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
    if let error = error {
        print(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 {
            print(error)
            return
        }
        print("Successfull sign in!")
        self.performSegue(withIdentifier: "goToGame", sender: self)
    }
}

func sign(_ signIn: GIDSignIn!, present viewController: UIViewController!) {
    self.present(viewController, animated: true, completion: nil)
}

func sign(_ signIn: GIDSignIn!, dismiss viewController: UIViewController!) {
    self.dismiss(animated: true, completion: nil)
}

}

...