我实施了Google登录,一切都适用于iOS 8.但是当我在iOS 9上调用此行时:
GIDSignIn.sharedInstance().signIn()
我可以第一次登录。但是如果我取消,下次我尝试登录时会显示一个白色屏幕,其中会显示正常的用户批准网页视图。
当我删除应用程序并重新安装它时,甚至可能会在操作系统级别缓存某些内容。
唯一的解决方案是重新打开iOS模拟器或重新启动我的iPhone。
我试过all these answers但没有运气。我也试过GIDSignIn.sharedInstance().signIn().allowsSignInWithWebView = true
希望通过Safari授权可能有效,但Safari永远不会打开。我的Podfile有pod 'Google/SignIn'
所以我认为这不是版本问题。
我现在处于亏损状态,因为这超出了我的应用范围,而我所能想到的就是解构一个有效的示例应用,并逐行比较其设置与我的应用。
是否有人有工作示例应用的链接?
答案 0 :(得分:5)
所以,我和你有完全相同的问题。它花了我一小时尝试一切。我终于找到了一个解决方案,可能不是100%正确,但它适用于我并解决了问题。
这就是我在项目中所做的。 首先,我自己实现了三个GIDSignInUIDelegate函数,这与官方文档冲突,因为我的GIDSignInUIDelegate是UIViewController的子类。但我正在使用我的自定义签名按钮,当我按照谷歌官方文档时,它无法正常工作。所以我试了一切,发现它有效。
实现委托功能后,需要做两件事。
在以下函数中,设置viewController.view.layoutIfNeeded()
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Clear the box each time the button is clicked
ListBox1.Items.Clear()
' Input string.
Dim input As String = TextBox1.Text.Trim
Dim pattern As String = "<(.*?)>"
For Each match As Match In Regex.Matches(input, pattern, RegexOptions.IgnoreCase)
ListBox1.Items.Add(match.Groups(1).Value)
Next
End Sub
End Class
请勿在ViewDidLoad()
中设置此委托 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)
}
相反,请在按钮操作中进行设置。否则,它会以某种方式继续显示委托
希望它能帮到你解决问题。
答案 1 :(得分:2)
我也面临同样的问题。事实上,在一个Viewcontroller中,它正在为我和另一个viewcontroller工作,它无法正常工作。
如果我在一些Button Action方法中调用[[GIDSignIn sharedInstance] signIn]
而不在其中,它对我有用。但如果我在viewDidLoad中调用它,我会得到白屏。
我发现了另一种解决方法,但我并不是因为我认为它不可靠
[self performSelector:@selector(LogActionPresed:) withObject:self afterDelay:3.5];
LogActionPresed是内部调用[[GIDSignIn sharedInstance] signIn]
另一个工作解决方案是在viewDidAppear
中调用此方法- (void) viewDidAppear:(BOOL)animated {
[self LogActionPresed:self];
}
答案 2 :(得分:2)
在iOS 10上,我观察到如果呈现视图控制器位于UINavigationController的堆栈中它会起作用。如果呈现视图控制器不在这样的堆栈中,则Web视图将保持为空并且为白色。
答案 3 :(得分:0)
删除活动指标后,为我工作。
答案 4 :(得分:0)
Google Pod会记住您登录的用户。尝试注销错误并退出。这样,您下次登录时就可以在Google中选择您的帐户。