gpt4 book ai didi

iOS:如果委托(delegate)不是 UIApplicationDelegate,则 Google 登录不起作用

转载 作者:行者123 更新时间:2023-12-01 18:39:38 26 4
gpt4 key购买 nike

我正在尝试使用 Google 登录来验证我使用 Firebase 的 iOS 应用程序的用户。

破解 GoogleSignInDependenies.framework 后文件删除重复的类,并按照 Firebase 和 Google 登录网站上的说明添加代码,我让它工作。其中一部分是添加 GIDSignInProtocol func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) 中应用程序委托(delegate)和实现代码的协议(protocol)方法。

我现在想将另一个类设置为登录的委托(delegate),但是当我重新分配委托(delegate)时,回调永远不会发生,我终生无法理解为什么。

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
return true
}

public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
print("App delegate Signin")
}
}

class FirebaseSecurity:NSObject, GIDSignInDelegate {

override init() {

super.init()
GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID

// This works.
// GIDSignIn.sharedInstance().delegate = UIApplication.shared.delegate as! GIDSignInDelegate

// This doesn't work
GIDSignIn.sharedInstance().delegate = self
}

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

在安全中来回拨动两行 init ,我可以让日志说:
App delegate Signin

当我点击 GIDSignInButton我添加到我的 UI,但是当我切换到 FirebaseSecurity 时什么都没有作为代表。

任何人都知道为什么这不起作用?

最佳答案

好吧,我的错。当然,在花时间发布此内容后,我几乎立即发现了问题。

这与谷歌登录无关。

我不小心设置了FirebaseSecurity作为我的 I 容器中的一个 transient 实例,因此在按下登录按钮之前它已被释放。嗬!

即使一切正常,我也会把问题留在这里。也许其他人会从我的错误中学到一些东西。 :-)

关于iOS:如果委托(delegate)不是 UIApplicationDelegate,则 Google 登录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45377196/

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