在 iOS Google SDK 中,当登录过程成功时,我找不到相关的方法来处理事件。
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { }
此方法没有将完成处理程序作为参数,是否有任何其他 API 方法可以处理 SignIn 过程完成?
我在文档里没找到任何东西,而且谷歌的官方教程也很零散。
为什么我需要这个?
我创建了单独的 GoogleManager
类来处理 google 登录过程,我想从我的 VC 传递完成处理程序以在完成时执行 segue。应该如何处理?
最佳答案
为您的自定义 GoogleManager
创建一个委托(delegate),并在 GoogleManager
中创建该委托(delegate)的实例,并在您创建自定义类实例的类上实现该委托(delegate) GoogleManager
,之后当调用 GIDSignInDelegate
方法时使用您的自定义委托(delegate)并调用其方法。所以它应该看起来像这样。
protocol GoogleManagerDelegate {
func receiveResponse(user: GIDGoogleUser)// Pass Parameter that you want
}
现在在 GoogleManager
类中,当您在 GIDSignInDelegate
方法中获得响应时,您需要调用 GoogleManagerDelegate
方法。
class GoogleManager {
var delegate: GoogleManagerDelegate?
//Your other method
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
self.delegate?.receiveResponse(user: user)
}
}
现在在您的 Controller 中实现 GoogleManagerDelegate
,您在其中创建 GoogleManager
实例并将其委托(delegate)实例设置为自身。
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
}
}
关于ios - Google SDK iOS - sign() 方法完成处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41378116/