2016-06-29 1 views
0

Googleのアプリにログインしていますが、プログラムによるログインが成功したときに私の見解を変更することはできません。Googleのログイン時に表示を変更する

これは私のデモストーリーボードです。灰色のボックスはサインインボタンで、私はログイン画面からタブバーのコントローラ画面へのセグを「手動でページを移動」ボタンを追加しました。これをクリックすると、ユーザーがログインしたことをアプリが検出したときに自動的に発生する必要があります。

ユーザーがこのアプリケーションを開くと、最初の画面はユーザーがログインしている場合のView Controller「ログイン画面」です以下のコードでチェックして、それらをホーム画面(最初のタブ)に転送します。可能であれば、より良い/より速い方法でこれを行う方法があれば教えてください。

Storyboard

Loginscreen:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Google sign in 
    GIDSignIn.sharedInstance().uiDelegate = self 
    // Check if they're already signed in 
    GIDSignIn.sharedInstance().signInSilently() 

    // check if the user is signed in 
    if (GIDSignIn.sharedInstance().hasAuthInKeychain()){ 
     print("signed in") 
     // Forward the user here straight away... 
    } else { 
     print ("not signed in") 
     // Need to handle the forwarding once they sign in. 
    } 
} 

答えて

1

あなたが欲しいあなたのログイン画面からいずれかViewControllerSegueを追加し、そのようなあなたのコードを書くことができ、次のいずれか

if (GIDSignIn.sharedInstance().hasAuthInKeychain()){ 
     print("signed in") 
    performSegueWithIdentifier("your_segue_name", sender: self) 
     // Forward the user here straight away... 
    } 

またはすることができますViewControllerをモーダルで表示する:

if (GIDSignIn.sharedInstance().hasAuthInKeychain()){ 
let storyboard = UIStoryboard(name: "Yourstoryboardname(Example: Main)", bundle: nil) 
let vc = storyboard.instantiateViewControllerWithIdentifier("yourviewcontrollertobepresented") as! UIViewController 
self.presentViewController(vc, animated: true, completion: nil) 
} 

NAMEあなたの存在するあなたのviewcontroller。これを行うには、ストーリーボードのViewControllerをクリックし、Identity inspectorにはStoryboard IDと表示されます。名前を付けて同じ名前を付けてください。instantiateViewControllerWithIdentifier("yourviewcontrollertobepresented")

+0

大変ありがとうございます。 Googleがサインインしようとするたびに通知リスナーに入れなければならなかったが、ユーザーの電子メールが検索されて失敗が発生する前に、ページが切り替わる2〜2秒かかる。私は、Googleのログインをスピードアップするための推奨される方法が何であるかわからない、多分ユーザーがログインした後で詳細をキャッシュする。 – burg93

関連する問題