gpt4 book ai didi

ios - iOS 9 上的 GIDSignIn 白屏

转载 作者:可可西里 更新时间:2023-11-01 03:43:12 26 4
gpt4 key购买 nike

我实现了 Google 登录并且在 iOS 8 上一切正常。但是当我在 iOS 9 上调用此行时:

GIDSignIn.sharedInstance().signIn()

我可以第一次登录。但是,如果我取消,下次我尝试登录时,它会显示一个白屏,而正常的用户批准 Web View 将显示该屏幕。

甚至在我删除应用程序并重新安装时也会发生这种情况,这意味着某些内容可能会在操作系统级别缓存。

唯一的解决办法是重新打开 iOS 模拟器或重启我的 iPhone。

我试过了 all these answers没有运气。我也试过 GIDSignIn.sharedInstance().signIn().allowsSignInWithWebView = true 希望通过 Safari 授权可能有效,但 Safari 永远不会打开。我的 Podfile 有 pod 'Google/SignIn',所以我认为这不是版本问题。

此时我不知所措,因为这超出了我的应用程序的范围,我所能想到的就是解构一个工作示例应用程序并将其设置逐行与我的应用程序进行比较。

有人有指向可用示例应用程序的链接吗?

最佳答案

所以,我遇到了和你完全一样的问题。我花了几个小时来尝试一切。我终于找到了一个解决方案,它可能不是 100% 正确,但它对我有用并解决了问题。

这就是我在我的项目中所做的。首先,我自己实现了三个GIDSignInUIDelegate函数,这与官方文档冲突,因为我的GIDSignInUIDelegate是UIViewController的子类。但是我用的是我的自定义签名按钮,按照google官方文档进行操作,还是没有用。所以我尝试了一切,发现它有效。

在你实现委托(delegate)功能之后,有两件主要的事情需要做。

  1. 在下面的函数中,设置viewController.view.layoutIfNeeded()

     func sign(_ signIn: GIDSignIn!, present viewController: UIViewController!) {
    //This line does the trick to fix signin web not showing issue
    viewController.view.layoutIfNeeded()

    self.present(viewController, animated: true, completion: nil)
    }
  2. 不要在 ViewDidLoad() 中设置此委托(delegate)

    GIDSignIn.sharedInstance().uiDelegate = self

相反,在按钮操作中设置它们。否则,它会以某种方式一直显示委托(delegate)

希望对您的问题有所帮助。

关于ios - iOS 9 上的 GIDSignIn 白屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375624/

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