我的iOS应用程序有一个在UIWebView
中设置的登录页面。它还有Facebook和G +登录。我可以让正常的登录屏幕工作,好吧。但是当我用Facebook和G +这样做时,我遇到了问题。我假设原因是按下单击按钮弹出的新窗口。
有没有办法在不诉诸手动登录的情况下处理这个问题?
答案 0 :(得分:1)
使用原生Facebook和G +登录要容易得多。您要完成的任务比使用本机登录要复杂得多。
如果您真的出于某种原因必须在UIWebView中执行此操作,则必须实施以下策略:
覆盖-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
协议的UIWebViewDelegate
方法。
在您的实现中,您应该在另一个模态UIWebView中打开登录界面并在那里处理登录事件,并且在解除该模态视图时,如果登录成功,则继续使用应用程序流。
< / LI>这看起来像这样:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = [request URL];
//for facebook login
if ([[url absoluteString] containsString:@"m.facebook.com"] && [[url absoluteString] containsString:@"login"]) {
// instantiate and present new modal UIViewController containing UIWebView that loads the url.
return NO;
}
//for G+ something similar
return [super webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];
}
然后,登录的模态viewControllers还必须实现如何处理可能的登录事件的逻辑,并在成功时解雇自己,这将非常复杂。
第一个webView还必须知道模式何时被解除(可以通过协议或其他方式完成),然后检查登录状态,如果成功则继续。
因此,正如我所说,如果您使用本机登录,那将是最好的。