2016-12-29 5 views
1

iOS Google SDKでは、signIn処理が成功したときにイベントを処理するための関連メソッドを見つけることができませんでした。Google SDK iOS - sign()メソッド補完ハンドラ

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

このメソッドはパラメータとして完了ハンドラを取得しません。このメソッドは、SignInの処理完了を処理できる他のAPIメソッドがありますか?

私はドキュメントで何かを見つけられませんでした。また、Googleの公式チュートリアルは非常に非道です。

なぜこれが必要ですか? 私はGoogle Sign In処理のために別のGoogleManagerクラスを作成します。完了したらsegueを実行するためにVCから補完ハンドラを渡したいと思います。どのようにそれにアプローチすべきですか?

+0

Google SDKで完了ハンドラのメソッドがありません –

+0

NotificationObserverを追加できます。 – Wolverine

答えて

2

カスタムGoogleManagerのための1つのデリゲートを作成し、そのGoogleManager内でそのデリゲートのインスタンスを作成し、GIDSignInDelegate方法は、カスタムデリゲートを使用すると呼ばれ、その呼び出されたときに、その後、カスタムクラスGoogleManagerのインスタンスを作成しているクラスにそのデリゲートを実装方法。だから、このように見えるはずです。

GoogleManagerクラスで今
protocol GoogleManagerDelegate { 
    func receiveResponse(user: GIDGoogleUser)// Pass Parameter that you want 
} 

あなたはGoogleManagerDelegateメソッドを呼び出す必要がGIDSignInDelegate方法で応答を取得します。

class GoogleManager { 
    var delegate: GoogleManagerDelegate? 

    //Your other method  

    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 
     self.delegate?.receiveResponse(user: user) 
    } 
} 

今、あなたはGoogleManagerのインスタンスを作成し、あなたのコントローラ内のGoogleManagerDelegateを実装して、自己にそのデリゲートのインスタンスを設定します。

class ViewController: UIViewController, GoogleManagerDelegate { 

    //Your other methods  

    func googleSignIn() { 
     let googleManager = GoogleManager() 
     googleManager.delegate = self 
    } 

    //GoogleManagerDelegate method 
    func receiveResponse(user: GIDGoogleUser) { 
     //Access user object here 
    } 
} 
+0

上記の編集を参照してください – DCDC

+0

@DCDCなぜsharedGIDSignInを作成しましたか?それは何のために、私は私の答えでそれについて何も言及していない。 –

+0

ノーマインド、はい、ありがとうございます – DCDC

関連する問題