Zac*_*ris 6 hang ios ios9 google-signin
我实施了Google登录,一切都可以在iOS 8上运行.但是当我在iOS 9上调用此行时:
GIDSignIn.sharedInstance().signIn()
Run Code Online (Sandbox Code Playgroud)
我能够第一次登录.但是,如果我取消,下次我尝试登录时会显示一个白色屏幕,其中显示正常的用户批准Web视图.
当我删除应用程序并重新安装它时,甚至会发生这种情况,这意味着可能会在操作系统级别缓存某些内容.
唯一的解决方案是重新打开iOS模拟器或重新启动我的iPhone.
我没有运气就尝试了所有 这些 答案.我也试过GIDSignIn.sharedInstance().signIn().allowsSignInWithWebView = true希望通过Safari授权可能会起作用,但Safari永远不会打开.我的Podfile有,pod 'Google/SignIn'所以我不认为这是一个版本问题.
我在在这一点上的损失,因为这超出了我的应用程序的范围,以及所有我能想到的是解构工作示例应用程序,并通过线我的应用程序行比较其设置.
有人有一个工作示例应用程序的链接?
小智 5
所以,我和你有完全相同的问题.它花了我一小时尝试一切.我终于找到了一个解决方案,可能不是100%正确,但它适用于我并解决了问题.
这就是我在项目中所做的.首先,我自己实现了三个GIDSignInUIDelegate函数,这与官方文档冲突,因为我的GIDSignInUIDelegate是UIViewController的子类.但我正在使用我的自定义签名按钮,当我按照谷歌官方文档时,它无法正常工作.所以我试了一切,发现它有效.
实现委托功能后,需要做两件事.
在以下函数中,设置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)
}
Run Code Online (Sandbox Code Playgroud)不要在ViewDidLoad()中设置此委托
GIDSignIn.sharedInstance().uiDelegate = self
Run Code Online (Sandbox Code Playgroud)而是在按钮操作中设置它们.否则,它会以某种方式继续显示委托
希望它能帮助你解决问题.
我也面临同样的问题。事实上,在一个视图控制器中它对我有用,而在另一个视图控制器中它不起作用。
如果我在某个 Button Action 方法内部调用而不是在 in 中,它对我有用[[GIDSignIn sharedInstance] signIn]。但是如果我在 viewDidLoad 内部调用它,我会得到白屏。
我找到了另一种解决方法,但我不会这样做,因为我认为它不可靠
[self performSelector:@selector(LogActionPresed:) withObject:self afterDelay:3.5];
Run Code Online (Sandbox Code Playgroud)
其中 LogActionPresed 是内部调用的方法[[GIDSignIn sharedInstance] signIn]
另一个可行的解决方案是在 viewDidAppear 中调用此方法
- (void) viewDidAppear:(BOOL)animated {
[self LogActionPresed:self];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |