来自viewDidLoad的iOS登录/屏幕和挂起Google登录(仅限重复登录)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自viewDidLoad的iOS登录/屏幕和挂起Google登录(仅限重复登录)相关的知识,希望对你有一定的参考价值。
我在Google云端硬盘登录时遇到了一些问题。我把它缩小了很多,并产生了一个非常小的repro。
问题是我尝试在View Controller首次出现时签署用户(viewDidLoad)。它是一个文件浏览器视图,允许用户从他/她的Google云端硬盘中选择一个文件。这在第一次加载时工作正常,并且过去常常使用旧的Google Drive集成工作。
但是,现在,当用户:
- Segues to File Browser查看并登录
- Segues回到主视图
- 决定退出或以其他方式退出Google
- Segues返回文件浏览器视图(再次调用viewDidLoad并登录Google Drive)...
登录控制器似乎尝试加载,但它只是保持完全空白,并且无法退出这种情况。该应用程序显示为挂起。
有没有其他人有这个问题,是否已知?你可以运行这个最小的repro来看看这个问题:
https://github.com/mmcguill/google-objc-signin-problem-minimal-repro
我发现通过使用如下所示的延迟,问题不再发生。你可以想象,这不是我真正想在我的应用程序中做的事情,它感觉相当hacky。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
GIDSignIn* signIn = [GIDSignIn sharedInstance];
signIn.delegate = self;
signIn.uiDelegate = self;
[signIn signIn];
});
Cocoapod正在发生这种情况:
/ RTI
在iPhone模拟器和实际的iPhone 7上。不确定其他设备,虽然我认为它是相同的。
对于干净的解决方法的任何其他建议都会很棒。但我希望我的观点的行为保持不变(在启动时显示Google云端硬盘,如果未登录则弹出窗口登录)...
你可以在你调用[[GIDSignIn sharedInstance] singIn];
的UIViewController中实现uiDelegate
然后在- (void)signIn:(GIDSignIn *)signIn presentViewController:(UIViewController *)viewController;
中呈现传递的视图控制器之前,只需调用[viewController view];
,这应该强制在显示之前加载UI。
我在iPhone7 ios11上也经历过这种行为,似乎解决了这个问题
以上是关于来自viewDidLoad的iOS登录/屏幕和挂起Google登录(仅限重复登录)的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 中 JQuery 停止和挂起的 ajax 请求
当应用程序被终止时并在后台使用 FusedLocationProviderClient 和挂起的 Intent 但在不规则时间获取位置