gpt4 book ai didi

ios - Google SDK iOS - sign() 方法完成处理程序

转载 作者:搜寻专家 更新时间:2023-11-01 07:17:23 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com